我终于设法使用NSCoding和plist文件保存我的数据。 但是,解决方案(从各种教程拼凑而成)使用Archiver,因此生成的plist文件是二进制文件。
我希望将数据保存在文本/可读plist xml文件中(至少出于测试目的),因为我可以阅读它。
如何更改代码才能执行此操作?
我的" encodeWithCoder"和" initWithCoder"方法属于我的班级名称。
我的AppDelegate使用它将数据保存在" allMsgs"是一个Class实例数组:
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:allMsgs];
[encodedObject writeToFile:plistPath atomically:YES];
AppDelegate使用它来读取数据:
NSData *codedData = [[NSData alloc] initWithContentsOfFile:plistPath];
if(codedData!=nil){
allMsgs = [NSKeyedUnarchiver unarchiveObjectWithData:codedData];
}
答案 0 :(得分:0)
以下是有关如何将数据保存在plist中的示例:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *docFilePath = [documentsDirstringByAppendingPathComponent:@"UserSettings.plist"];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:0];
// add the data to dict here
[dict setObject:allMsgs forKey:@"allMsgsKey"];
// save the data as plist
[dict writeToFile:docFilePath atomically:YES];
[dict release];
由于plist实际上由NSDictionary表示,因此您的数据必须能够存储在字典中。