2011-04-27 55 views
0

我认为标题说的都是。我使用了我在这里找到的一些示例代码,但该文件不会被创建。无法保存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"]; 
} 

回答

5

什么是你的字典?只有某些基础对象可以写出来并且回读,而无需您做任何额外的工作。如果您的字典包含您定义的自定义对象,则需要使用其他机制来写入和读回数据,例如NSArchiver。我猜测,无论[dataInstance chapter]产量是不是这些基本的对象类型之一。

有关可以自动读取和写入的数据类型,请参阅NSDictionary的文档(文件名为writeToFile:atomically:)。也看看NSArchiver和NSCoding协议。

+0

这可能是原因!章是一个自制课。 – madmax 2011-04-27 15:28:46