我正在编写一个使用Core Data来保存模型的iPhone 3.0应用程序。我希望应用程序安装默认数据集。在为iPhone开发时< 3.0我在运行构建之前使用SQL脚本初始化数据库,然后将准备好的.sqlite文件部署为应用程序资源。 Core Data的最佳方法是什么。
结论:最后我写了一个通用的XML处理程序。元素名称映射到Objective-C类名和属性名。元素中的PCDATA值被转换为在元素命名的属性上声明的类型。子元素或属性元素被解析为对象实例 - 因此通过解析XML文档,构建了对象图。我不得不首先掌握Objective-C运行时: - )
示例目标类:
@interface Widget : NSObject {
@private
NSString* name;
NSSet* sprockets;
}
@property (nonatomic, retain) NSString* name;
@property (nonatomic, retain) NSSet* sprockets;
- (void)addSprocketsObject:(Sprocket*)value;
@end
@interface Sprocket : NSObject {
@private
NSString* name;
NSNumber* canFly;
NSNumber* wheels;
}
@property (nonatomic, retain) NSString* name;
@property (nonatomic, retain) NSNumber* canFly;
@property (nonatomic, retain) NSNumber* wheels;
@end
默认数据示例:
<data>
<Sprocket id="sprocket-1">
<name>Sprocket1</name>
<wheels>4</wheels>
</Sprocket>
<Widget id="widget-1">
<name>MyWidget</name>
<sprockets>
<Sprocket ref-id="sprocket-1"/>
<Sprocket id="sprocket-2">
<name>Sprocket2</name>
<canFly/>
</Sprocket>
<Sprocket id="sprocket-3">
<name>Sprocket3</name>
</Sprocket>
</sprockets>
</Widget>
</data>
答案 0 :(得分:6)
有两种选择:
根据我的经验,实现选项1的代码与预填充持久存储所需的代码几乎相同,因此可能只有一个选项有两个观点。
答案 1 :(得分:4)
您可以使用Plist存储初始数据并在首次运行时填充持久性存储。这种方法比编写自己的自定义XML解析器更容易。