使用Archiver保存Plist数据与创建可读(xml)文件

时间:2012-02-01 21:32:10

标签: iphone objective-c xcode

我终于设法使用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]; }

1 个答案:

答案 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表示,因此您的数据必须能够存储在字典中。