我正在开发一个核心数据应用程序(对于iPhone 3.0,虽然我认为这不会真正有所作为)并且它需要附带一个充满数据的"入门"数据库.使用SQLite,我只需让应用程序在首次启动时将填充的数据库从捆绑包复制到App的文档目录中,然后加载该数据库 - 所有信息都随之而来,我们准备好了.但是使用Core Data,我不确定我是否可以将Persistent存储保存到App包并在Core Data开始执行之前复制它.这会导致任何问题吗?有相当多的初始数据,所以我不想以其他格式打包它并且必须解析它.
我需要将.sqlite文件导入Core Data,我在互联网上搜索并发现:
它正在创建一个Python脚本来填充此数据库,方法是读入旧数据库的内容,并在新数据库中创建相应的行.但是我的sqlite数据库在表和列的数量上太大了,这可能花费我相当长的时间.
我也发现了这个:
在iPhone OS 3.0上使用预先填充的SQLite数据库和核心数据
但我不太明白它,看起来它正在将旧数据库复制到新数据库,那么它如何将Z_后缀添加到所有表和列名称?另外,它要求我创建实体和属性,无论如何这可以自动完成(来自sqlite dabase文件)?
谢谢!
我正在编写一个使用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/> …
Run Code Online (Sandbox Code Playgroud) 我正在做一个iPhone应用程序.在这个应用程序中,我只想让一个数据库用作我的应用程序中值的查找表.数据库唯一能做的就是根据程序的查询为我提供所需的值.它不会在数据库中添加或删除任何内容.我的问题是如何使用CoreData初始化应用程序上的默认数据.因此,当程序启动时,它已经拥有了所需的所有值.
如果您对其他更好的做法或其他选择有其他建议,请告诉我.
谢谢.
我正在尝试发送Core Data
已经填充的应用程序。我找到了一些链接,其中解释了如何执行此操作,但要么不起作用,要么答案非常旧。我关注了这篇文章,但它不起作用。解决方案可能是将.sqlite
文件导入到应用程序文件夹,然后将它们复制到设备的文件系统,但我不知道该怎么做。有没有什么方法可以用现有实体和记录预先填充我的核心数据?