У меня возникла проблема в моем приложении, CoreData работает так, как и должно быть в симуляторе, но не на устройстве.CoreData «Ошибка проверки URL-адреса для магазина»
я получаю
2010-09-30 12:45:07.500 CoreDataTutorial_iOS[130:307] Unresolved error Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x1412a0 {NSUnderlyingException=Error validating url for store}, {
NSUnderlyingException = "Error validating url for store";
Я звоню для PersistentStoreCoordinator в этой функции (которая кидает ошибку выше):
-(NSPersistentStoreCoordinator*)persistentStoreCoordinator
{
if(persistentStoreCoordinator_ != nil)
return persistentStoreCoordinator_;
NSURL *aStoreURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingFormat:@"corebase.sqlite"]];
NSError *anError = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if(![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:aStoreURL options:nil error:&anError])
{
NSLog(@"Unresolved error %@, %@", anError, [anError userInfo]);
abort();
}
return persistentStoreCoordinator;
}
Я устанавливаю точку останова на «objc_exception_throw », чтобы увидеть, что aStoreURL есть, и это: файл: //localhost/var/mobile/Applications/BE9A2982-BDC3-405D-A201-FB78E9E0790B/Documentscorebase.sqlite
Я замечаю, что он сам не добавляет окончательный «/» после «/ Documents». Когда я создал URL-адрес таким образом
NSURL *aStoreURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingFormat:@"/corebase.sqlite"]];
Это, кажется, работает, или, по крайней мере, был принят эту часть. Не должна ли эта функция добавлять эту часть?
-(NSString*) applicationDocumentsDirectory
{
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
}
Он отлично работает в симуляторе, что такое правильная практика?