2011-01-14 15 views
11

Używam tego szablonu Xcode dla danych podstawowych.iphone - katalog aplikacji coredata

Na delegata, mam tej metody:

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

ale to wymaga iOS4.

Próbuję dostosować aplikację do wersji 3.0.

Tak, mam konwertowane tej metody:

- (NSURL *)applicationDocumentsDirectory { 

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

} 

ale kiedy CoreData próbuje użyć adresu URL sklepu na

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

ulega awarii na linii IF z komunikatem:

Magazyny SQL CoreData obsługują tylko adresy URL plików (dostałem /var/mobile/Applications/BB312A7E-6AE1-4BA2-AD87-6B96D8855CC6/Documents/MyFile.sqlite). '

ale StoreURL to NSURL!

Jakieś wskazówki? Dzięki

Odpowiedz

24

spróbować zrobić:

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

sprawdzić, czy to załatwia sprawę.

+0

dzięki! Jesteś meżczyzną!!!! – SpaceDog

+0

Docelowa liczba moich aplikacji wynosi 8,0, co zadziałało w tym przypadku! Dzięki! –

0

Swift 3

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