Не могу сохранить NSDictionary в файл - PullRequest
0 голосов
/ 27 апреля 2011

я думаю, что название говорит все.Я использую пример кода, который я нашел здесь, но файл не будет создан.

- (id)init {
    [[NSBundle mainBundle] loadNibNamed:@"PadContent" owner:self options:nil];

    if ([[NSFileManager defaultManager] fileExistsAtPath:[self filePathOfBookmarks]]) {
        bookmarks = [[NSMutableDictionary alloc] 
                      initWithContentsOfFile:[self filePathOfBookmarks]];
    } else {
        bookmarks = [[NSMutableDictionary alloc] init];
        NSLog(@"file does not exist");
    }
    return self;
}

- (void)addBookmark:(id)sender{
    [bookmarks setObject:[dataInstance chapter] forKey:[[dataInstance chapter]title]];
    [bookmarks setObject:[dataInstance chapter] forKey:@"test"];
    NSLog(@"count: %d", [bookmarks count]);
    NSLog([self filePathOfBookmarks]);
    [bookmarks writeToFile:[self filePathOfBookmarks] atomically:YES];
}

- (NSString *) filePathOfBookmarks {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDirectory = [paths objectAtIndex:0];
    return [docDirectory stringByAppendingPathComponent:@"bookmarks"];
}

1 Ответ

5 голосов
/ 27 апреля 2011

Что у тебя в словаре?Есть только определенные базовые объекты, которые могут быть записаны и прочитаны без каких-либо дополнительных действий с вашей стороны.Если ваш словарь включает в себя пользовательский объект, который вы определили, вам потребуется использовать другой механизм для записи и считывания данных, например NSArchiver.Я предполагаю, что все, что дает [dataInstance chapter], не входит в число этих базовых типов объектов.

См. Документацию для NSDictionary's writeToFile:atomically: для типов данных, которые можно читать и записывать автоматически.Также посмотрите на NSArchiver и протокол NSCoding.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...