0

什么是存储文本文件的便捷方式,以便在 iOS 中轻松地从它们创建对象?

例如:

  • 电子表格 -> XML -> NSObject 子类(这个问题是 Google Docs Spreadsheets 只能导出到 OpenDocument Spreadsheets XML 文件,解析起来很不方便)
  • csv -> NSObject 子类(csv 太容易出错)

要存储的样本数据:

  • 姓名 - 号码 - 电子邮件
  • 爱丽丝 - 012345 - Alice@Alice.com
  • 鲍勃 - 78910 - Bob@Bob.com

要创建的示例类:

@interface Person : NSObject
{
    NSString *name;
    NSString *number;
    NSString *email;
}

谢谢

4

3 回答 3

1

在 iOS 中执行此操作的首选(且简单)方法是属性列表 (plist) 文件。这是Apple 的 plist 入门文档

它们本质上是 iOS 的 JSON,实际上你可以通过 NSJSONSerialization 类方法轻松地在两者之间进行转换。

这种技术与 Apple 做事的方式是一致的(这在 Apple 开发社区中是一个胜利),并且不需要外部库。此外,如果您决定在未来扩展应用程序,则在所有地方都内置了用于将 plist 写回的支持。

但是,应该提到的是,要从文件中获取实际的自定义对象(即自定义类的实例),您需要探索稍微复杂一点的对象归档世界。

于 2012-07-08T05:23:29.223 回答
0

假设您只有纯文本数据,我会这样做:

  1. 将电子表格导出为 CSV。
  2. 使用 CSV 模块在 python 中读取 CSV。
  3. 使用 minidom 模块转换为您喜欢的 XML。
  4. 阅读 Obj C 中的 XML。我为此使用了 SMXML (https://github.com/nfarina/xmldocument/)。不是很快但很方便。

这个过程也可以使用 AppleScript 自动化。

于 2012-07-08T05:22:57.000 回答
0

如果你想要一个非常优雅的解决方案并且你可以使用你想要的任何类型的文件,使用 plist 并使用 NSCoding 协议中的 initWithCoder: 和 encodeWithCoder: 方法将你的类/实例转换为属性列表对象成为可能。

于 2012-07-08T05:50:16.817 回答