objective-c - 是否可以将自定义对象序列化为 Objective-C 中的 plist 文件?

标签 objective-c serialization plist nscoding

为了简单起见,假设我们有以下简单的类接口(interface):

@interface Person : NSObject <NSCoding> {
  NSString *firstname;
  NSString *lastname;
}

@property (copy) NSString *firstname;
@property (copy) NSString *lastname;

@end

是否可以将此对象序列化为 plist(假设 NSCoding 协议(protocol)已正确实现)?

更新2010年12月31日14:40

我对此有一些后续问题。是否可以让 NSKeyedArchiver 将 plist 导出为 XML?此外,是否可以将 XML 转储到变量而不是文件中?

最佳答案

关于设置输出格式为XML,我建议:

[myKeyedArchiver setOutputFormat: NSPropertyListXMLFormat_v1_0];

至于将其放入变量而不是文件中,我建议使用 initForWritingWithMutableData: 初始化程序创建 NSKeyedArchiver。完成编码后, 确保对其调用 finishEncoding,然后 XML 将位于您在初始化时传入的 NSMutableData 中。

如果您随后需要从中获取 NSString,您可以像这样从 NSMutableData 中获取它:

NSString* xmlString = [[NSString alloc] initWithData: myMutableData  encoding: NSUTF8StringEncoding];

这应该可以解决问题。祝你好运!

关于objective-c - 是否可以将自定义对象序列化为 Objective-C 中的 plist 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570110/

相关文章:

ios - iOS Xcode plist 警告是什么意思?

iphone - Tableview 的 Plist 搜索

ios - 如何在 iOS info.plist 文件中本地化字符串数组

java - 无效类型代码 : 30 java in ObjectInputStream

Java/可序列化 - 仅覆盖已更改的对象

iphone - iOS bundle 子文件夹目录

ios - 在 IOS 中从 google map place api 中提取需要信息

c++ - 为基类和派生类实现 MFC 序列化

swift - 如何在包含 Objective-C 代码的项目中使用 RxSwift?

iOS UITableViewCell 需要按两次才能调用 didSelectRowAtIndexPath