Ошибка при попытке доступа к магазину iOS - PullRequest
0 голосов
/ 01 июля 2011

Все,

У меня есть следующий код в моем проекте:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (__persistentStoreCoordinator != nil)
    {
        return __persistentStoreCoordinator;
    }
    NSError *error = nil;


    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"My_Model.sqlite"];

    NSURL *storeURL = [NSURL fileURLWithPath:storePath];


    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }

    return __persistentStoreCoordinator;
}

- (NSString *)applicationDocumentsDirectory
{
    NSError *err = nil;
    return [NSString stringWithContentsOfURL:[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] encoding:NSUTF8StringEncoding error:&err];
}

И я получаю сообщение об ошибке:

* Завершаетсяприложение из-за необработанного исключения «NSInvalidArgumentException», причина: '* - [NSURL initFileURLWithPath:]: строковый параметр nil'

Что я не понимаю, почему это возвращает ноль?Я ссылался на книгу для этого кода, и кажется, что он должен работать все в порядке.Есть идеи?

Заранее спасибо

Пол

1 Ответ

1 голос
/ 01 июля 2011

Ваш -applicationDocumentsDirectory метод выглядит очень странным для меня.Вместо того чтобы возвращать путь к каталогу документов, вы пытаетесь фактически вернуть содержимое этого каталога (который, вероятно, невозможно прочитать, поэтому он вернет ноль).

Попробуйте заменить метод на

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