XCode 4中的核心数据项目模板问题

时间:2011-03-30 21:27:59

标签: iphone xcode core-data xcode4 xcode-template

我使用Core Data在XCode 4中创建了一个基于Window的iPhone应用程序。关于核心数据位,我有一些问题:

  1. 在应用程序委托头文件中,没有3个核心数据属性不作为实例变量出现?即@interface部分中没有列出变量,但它们有属性,它们在实现文件中合成。这是对的吗?

  2. 在SQLite的默认持久性机制中?我在“persistentStoreCoordinator”方法中看到storeURL是“...... URLByAppendingPathComponent:@”CoreDataProjectTemplate.sqlite“

  3. 其中&何时会创建实际的sqlite持久性文件?我在模板的代码中看不到这将是什么?您是否必须添加自己的代码来创建它?

3 个答案:

答案 0 :(得分:2)

  1. 现代的Objective-C运行时不仅可以合成访问者,还可以合成属性的存储。如果需要,您可以指定自己支持属性的ivars,或者您可以让运行时解决它。

  2. SQLite是iOS支持的核心数据的唯一后备存储。

  3. 如果我没有弄错,保存托管对象上下文时将创建文件(如果它尚不存在)。当URL被添加到持久性存储协调器时,URL与持久性存储相关联。

答案 1 :(得分:1)

3)storeURL是Core Data数据库的名称和位置。如果你想把它放在其他地方只需更改基目录。您可能需要考虑应用程序支持目录。

答案 2 :(得分:1)

1我假设您指的是以下内容:

@synthesize managedObjectContext=__managedObjectContext;
@synthesize managedObjectModel=__managedObjectModel;
@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

此格式允许您为不同名称的变量创建访问器(即getter / setter访问者名称可以与变量名称不同)。如果先前未定义变量,则合成操作将自动为您创建合成实例变量。

2正如您从文件名中推断的那样,CoreData的默认持久存储是SQLite;但是它不仅限于这种类型。在第一次创建持久性存储时,您将消息发送到persistentStoreCoordinator,您可以在其中将addPersistentStoreWithType设置为以下之一:

NSSQLiteStoreType
NSBinaryStoreType
NSInMemoryStoreType

老实说,除非你有充分的理由去改变它,否则你最好坚持使用SQLite。

3持久性存储的位置URL是通过建立应用程序正在其中执行的目录(带有发送到applicationDocumentsDirectory的消息 - 在代码中的其他位置写入)构建的,然后通过URLByAppendingPathComponent参数将持久性存储的文件名附加到其中。您可以修改此项以添加子文件夹或根据需要更改文件名。