Sat*_*yam 0 iphone file nsmutabledictionary
我在将可变字典写入文件时遇到了麻烦.这是我正在编写的代码.我正在读取如下文件:(第一次运行应用程序时,它将没有任何数据)
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
self.favSaveFilePath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"Favorites.plist"]];
if([fm fileExistsAtPath:favSaveFilePath])
{
favoriteJokesDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:self.favSaveFilePath];
favoriteJokes = [[NSMutableArray alloc] initWithArray:[self.favoriteJokesDictionary objectForKey:@"FavoriteJokes"]];
return;
}
Run Code Online (Sandbox Code Playgroud)
我正在向数组中添加新字典,如下所示:
-(BOOL)addJokeToFavorite:(NSDictionary*)joke
{
BOOL success = NO;
[self.favoriteJokes addObject:joke];
success = [self.favoriteJokesDictionary writeToFile:self.favSaveFilePath atomically:YES];
return success;
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么不把字典绞在一边.任何人都可以指出我正在做的错误吗?
Cocoa API非常具体地说明在写入文件时,字典中的哪些值可以合法地存在.已知导致问题并且未在官方API文档中详细讨论的一个特定限制是,字典中的所有键必须是NSString类型(并且您的值必须是NSData,NSDate,NSNumber,NSString之一) ,NSArray或NSDictionary),即使字典本身支持任何对象类型的键和值.
这种限制的原因与默认情况下字典存储为XML文档(或Apple-speak中的"属性列表")这一事实有关.因此,我建议验证您的字典是否符合要保存到文件的要求,如果没有,则进行重组.
或者,如果重构字典不可行,您可能需要查看NSKeyedArchiver类.
| 归档时间: |
|
| 查看次数: |
7192 次 |
| 最近记录: |