Каталог приложений iphone - coredata

Я использую этот шаблон Xcode для основных данных.

У делегата у меня есть этот метод:

- (NSURL *)applicationDocumentsDirectory {
  return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

но для этого требуется iOS4.

Я пытаюсь сделать приложение совместимым с 3.0.

Итак, я преобразовал этот метод в:

- (NSURL *)applicationDocumentsDirectory {

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  return [NSURL URLWithString:documentsDirectory];

}

но когда coredata пытается использовать URL магазина в

  NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyFile.sqlite"];
  if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

он сбой на линии IF с сообщением:

CoreData SQL хранит только поддерживаемые URL-адреса файлов (полученные/var/mobile/Applications/BB312A7E-6AE1-4BA2-AD87-6B96D8855CC6/Documents/MyFile.sqlite).

но StoreURL - это NSURL!

Любые подсказки? Благодаря

Ответ 1

Попробуйте сделать:

NSString *pathToYourSqliteFile = @"/your/path/here";
NSURL *storeURL = [NSURL fileURLWithPath: isDirectory:NO];

Посмотрите, делает ли это трюк.

Ответ 3

Swift 3

 let documentsUrl = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first!