【发布时间】:2011-03-18 13:36:58
【问题描述】:
我有一个使用相对少量数据的 iPhone 应用程序。 我想以 XML 格式保存数据,并能够将其加载到内存中的 Objective-C 对象中。我想使用 iPhone SDK 工具,例如 NSPropertyListSerialization 或 writeToFile:atomically: 类和方法。
NSPropertyListSerialization documentation 这么说
NSPropertyListSerialization 类 提供转换属性的方法 列出对象到和从几个 序列化格式。物业清单 对象包括 NSData、NSString、 NSArray、NSDictionary、NSDate 和 NSNumber 对象。
假设我想保存几个 Person 对象(一个家庭),它们的属性都是 property-list 类型。我设法以 XML 格式保存它的唯一方法是:
// container for person objects
NSMutableArray *family = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfPeople; i++) {
// simulate person's attributes
NSArray *keys = [[NSArray alloc] initWithObjects:
@"id",
@"name",
@"age",
Nil];
NSArray *values = [[NSArray alloc] initWithObjects:
[NSNumber numberWithInt:i],
@"Edward",
[NSNumber numberWithInt:10],
Nil];
// create a Person (a dictionary)
NSDictionary *person = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
[family addObject:person];
[person release];
}
// save the "person" object to the property list
[family writeToFile:@"<path>/family.plist" atomically:YES];
[family release];
这将生成family.plist 文件。
但是请注意,我的 Person 对象实际上是一个以属性为键的 NSDictionary 对象(我认为子类化不是一个好主意)。 有没有办法像这样创建一个 Objective-C 类:
@interface Person : NSObject {
NSString *_id;
NSString *_name;
NSNumber *_age;
}
@end
并将其序列化为 plist/XML 文件? (我需要以文本格式(不是二进制)保存对象,以便我可以在文本编辑器中编辑此类数据并允许我的应用程序在运行时加载它,正常转换为 Objective-C 对象)。
提前致谢, 爱德华多
【问题讨论】:
标签: iphone objective-c serialization xml-serialization plist