我正在编写一个使用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
Run Code Online (Sandbox Code Playgroud)
示例默认数据:
<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>
Run Code Online (Sandbox Code Playgroud)
我想到两个选择:
根据我的经验,实现选项1的代码与预填充持久性存储所需的代码几乎相同,因此可能只有一个选项具有两个观点.
| 归档时间: |
|
| 查看次数: |
9745 次 |
| 最近记录: |