#iphone #nsdictionary #writetofile
#iPhone #nsdictionary #запись в файл
Вопрос:
я думаю, название говорит само за себя. Я использую некоторый пример кода, который я нашел здесь, но файл не будет создан.
- (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:
Что в вашем словаре? Существуют только определенные базовые объекты, которые можно записывать и считывать обратно без какой-либо дополнительной работы с вашей стороны. Если ваш словарь включает пользовательский объект, который вы определили, вам нужно будет использовать другой механизм для записи и обратного чтения данных, такой как NSArchiver. Я предполагаю, что все, что [dataInstance chapter]
дает, не относится к этим базовым типам объектов.
Типы данных, которые можно считывать и записывать автоматически, см. в документации к NSDictionary writeToFile:atomically:
. Также посмотрите на NSArchiver и протокол NSCoding.
Комментарии:
1. Это может быть причиной! Chapter — это класс, созданный самостоятельно.