Название объясняет точную проблему. Основной шаблон основной детали CoreData работает только на iOS 10 и выше. Но если вы попытаетесь запустить тот же шаблон на iOS 9 или ниже, он потерпит крах, потому что persistentContainer
не был создан, который мы использовали для получения NSManagedObjectContext
. Это связано с последним дополнением iOS 10 с xCode 8. Я видел, что для Swift существует несколько обходных решений, но не для Objective-C. Любое лучшее решение для Objc?Исходный код ядра Core Xcode 8 не поддерживается с iOS 9 и ниже
1
A
ответ
1
Вот решение,
Поскольку в прошивке 9 и выше не имеет инфраструктуры persistentContainer
, в основном вы должны инициализировать основной стек данных самостоятельно,
Этот метод используется в любом месте вашего класса делегата. Это то, что мы делали до iOS 10 persistentContainer
ввод ион.
- (void)initializeCoreData
{
NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}};
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"yourmodelname" withExtension:@"momd"];
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSAssert(mom != nil, @"Error initializing Managed Object Model");
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[moc setPersistentStoreCoordinator:psc];
_managedObjectContext = moc;
[EFLDatabase sharedDatabaseWithManagedObjectContext:_managedObjectContext];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsURL = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSLog(@"DOC %@", [documentsURL absoluteString]);
NSURL *storeURL = [documentsURL URLByAppendingPathComponent:@"yourmodelname.sqlite"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
NSError *error = nil;
NSPersistentStoreCoordinator *psc = [[self managedObjectContext] persistentStoreCoordinator];
NSPersistentStore *store = [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error];
NSAssert(store != nil, @"Error initializing PSC: %@\n%@", [error localizedDescription], [error userInfo]);
});
}
Теперь поместите ниже фрагмент кода в didFinishLaunchingWithOptions
метод, который будет в основном проверяет версию IOS, если ниже 10, а затем выполняет вышеупомянутый метод,
if ([[NSProcessInfo processInfo] operatingSystemVersion].majorVersion < 10) {
[self initializeCoreData];
}
0
Скачать Xcode 7, создать проект из шаблона и проверить использование основных данных и скопировать стек основные данные из App делегат
Смежные вопросы
- 1. iOS 9 не поддерживается на Xcode 6.3
- 2. iOS 9 не поддерживается Xcode 6.4
- 3. Телеграмма не поддерживается Xcode 8
- 4. Где исходный код ядра ядра?
- 5. Xcode 6 с iOS 9?
- 6. Поддерживаемые интерфейсы iOS 8 vs. iOS 9
- 7. Исходный код ядра JavaScript
- 8. SwiftyJSON поддерживается в Xcode 8 и iOS 10?
- 9. VOIP XCode 8, Swift 3 и iOS 9.x
- 10. Запуск отладки на устройстве iOS 9 с iOS 8 SDK
- 11. KeychainTouchID iOS 8 и 9
- 12. iOs 8, активность ядра и велосипеда
- 13. Xcode 8 Core Data Template для iOS 8,9
- 14. Xcode 8: создать приложение с базой IOS 9 Base SDK
- 15. Core bluetooth ios 8
- 16. Исходный предварительный просмотр IOS 9 не отображается
- 17. Сериализация данных ядра Core iOS
- 18. Ошибка кодового кода ядра в Xcode 8
- 19. Прокрутка ядра Core iOS не работает
- 20. Ошибка Xcode 8 Core Data
- 21. Не удалось загрузить исходный код ядра
- 22. ECSlidingViewController-не работает XCode 7 IOS 9
- 23. Как идентифицировать симуляторы iOS 8 и iOS 9 в iPhoneSimulator?
- 24. В xcode 6.1 и os x yosemite не поддерживается ios 7.1 и ниже версии?
- 25. Имеет поддержку проекта iOS 9 iOS 8
- 26. Выполнение логических тестов на iOS 8/9 с ошибками Xcode 8 для библиотек и фреймворков
- 27. iOS 9, Xcode 7, Multitouch с SpriteKit
- 28. Экран Xcode 8 сломанный при работе на IOS 9
- 29. ADALiOS 2.2.5 и 2.2.6 не работает ниже iOS 9
- 30. xcode ios 7 и ошибка экрана 8 экрана ios 8
Спасибо за ответ. Я уже пробовал, но, к сожалению, это не сработало для меня. –
Когда вы говорите: «это не сработало для меня», в чем же проблема? –
Ну, он не вызвал метод «managedObjectContext» автоматически, чтобы продолжить создание контекста. –