【发布时间】:2014-10-27 18:53:30
【问题描述】:
更新:当我更改以下行时,我可以写入文件
[infoDict setObject:userList forKey:@"users"];
到
[infoDict setObject:@"sampleString" forKey:@"users"];
所以,我尝试写入文件的结构一定有问题,有什么想法吗?
我正在尝试在我的 iOS 应用程序中创建一个 plist 文件并在运行时写入它。我无法写信,但我可以阅读。 writeToFile 方法返回“否”。 当我手动尝试手动打开使用 Finder 创建的文件时,它显示“无法读取数据,因为它的格式不正确。”,我理解这是因为使用文本编辑器打开文件时为空并且不显示 plist 类型的文件应具有的任何 xml 标记。 而且我知道我可以从中读取,因为在文件夹中手动拖动“有效”plist 文件时,我的代码能够从那里读取一个空列表。
1) 为什么没有创建有效的 plist 文件?
和,
2) 为什么我无法写入(甚至是有效的)plist 文件?
NSLog(@"* Writing contents to plist file *");
NSString* path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* plistPath = nil;
if ((plistPath = [path stringByAppendingPathComponent:@"users.plist"]))
{
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL exists = [fileManager fileExistsAtPath:plistPath];
NSLog(exists ? @"yes, file exists": @"no, file doesnt exist");
if (!exists) {
NSLog(@"creating file since it doesnt exist");
[fileManager createFileAtPath:plistPath contents:nil attributes:nil];
}
NSLog(@"path of file: %@", plistPath);
NSMutableDictionary *infoDict = [[NSMutableDictionary alloc] init];
NSLog(@"infoDict: %@", infoDict);
[infoDict setObject:userList forKey:@"users"];
NSLog(@"infoDict: %@", infoDict);
BOOL wrote = [infoDict writeToFile:plistPath atomically:YES];
NSLog(wrote ? @"yes, wrote to the file": @"no, didn't write to file");
}
NSLog(@"--------------------------------------------");
以下是控制台中的输出:
2014-10-17 10:50:11.290 UserReggy[1228:10032] * Writing contents to plist file *
2014-10-17 10:50:11.291 UserReggy[1228:10032] yes, file exists
2014-10-17 10:50:11.291 UserReggy[1228:10032] path of file: /Users/rvyas1/Library/Developer/CoreSimulator/Devices/DB612284-F481-467A-BAE8-37750497F42A/data/Containers/Data/Application/C9620C4D-EF1F-4C17-8D28-4E9B3B41F2C2/Documents/users.plist
2014-10-17 10:50:11.291 UserReggy[1228:10032] infoDict: {
}
2014-10-17 10:50:11.291 UserReggy[1228:10032] infoDict: {
users = {
dfgdfgd = "<User: 0x7ffd884da820>";
};
}
2014-10-17 10:50:11.292 UserReggy[1228:10032] no, didn't write to file
2014-10-17 10:50:11.294 UserReggy[1228:10032] --------------------------------------------
【问题讨论】:
标签: ios objective-c xcode nsdictionary plist