为什么NSMutableDictionary不想写入文件?
- (void)viewDidLoad { [super viewDidLoad]; if ([[NSFileManager defaultManager] fileExistsAtPath:pathString]) { infoDict = [[NSMutableDictionary alloc] initWithContentsOfFile:pathString]; } else { infoDict = [[NSMutableDictionary alloc]initWithObjects:[NSArray arrayWithObjects:@"BeginFrame",@"EndFrame", nil] forKeys:[NSArray arrayWithObjects:[NSNumber numberWithBool:YES],[NSNumber numberWithBool:YES], nil]]; if ([infoDict writeToFile:pathString atomically:YES]) { NSLog(@"Created"); } else { NSLog(@"Is not created"); NSLog(@"Path %@",pathString); } }
这是我的代码。 我检查是否创build文件,如果没有 – 我创build一个NSMutableDictionary
并将其写入文件的path,但writeToFile
方法返回NO
。 问题在哪里? 如果我使用NSFileManager
创build这个文件,它可以工作,但是当我想写一个字典时不会。
writeToFile:atomically
只有当你调用它的字典是一个有效的属性列表对象时,它才会工作( 请参阅文档 )。
对于一个NSDictionary
是一个有效的属性列表对象,除此之外,它的键必须是string ,但在你的例子中,键是NSNumber
实例。
你无法控制你有时要写的内容。 例如,当您要编写从服务器获取的JSON对象时,您无法避免使用null
值。
NSData
与这些“无效”值兼容,所以在这种情况下将NSArray
或NSDictionary
转换为NSData
是一种理想的方法。
写:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:jsonObject]; [data writeToFile:path atomically:YES];
读:
NSData *data = [NSData dataWithContentsOfFile:path]; NSDictionary *jsonObject = [NSKeyedUnarchiver unarchiveObjectWithData:data];
- 如何将Photoshop的水平调整映射到核心图像filter?
- 从一个控制器传递到另一个控制器在iPhone中,但不是在iPad中工作正常?
- fbDidLogin的问题永远不会调用iOS
- 当焦点从UITextField和UIWebView更改时,如何避免键盘隐藏和显示?
- Xamarin.Forms ZXing.Net.Mobile在iOS 10上扫描结果后丢失当前页面
- “Reachability.h”Reachability.m在添加它们时给出了一个Apple机器链接器错误
- NSMetadataQuery忽略自定义文件包types
- Swift EXC_BREAKPOINT将viewController分配给prepareForSegue中的variables
- 在UINavigationController中释放ViewControllers的内存