我在Xcode 4中创建了一个基于窗口的iPhone应用程序,具有核心数据。关于我有一些问题的核心数据比特:

  1. 在应用程序委托标题文件中,没有3个核心数据属性不显示实例变量?即,@Interface部分中没有列出的变量,但它们有属性,它们是在实现文件中合成的。这是正确的吗?

  2. 在默认持久机制sqlite中?我在“persistentstoreCoordinator”方法中看到了StoreUrl是“... UrlyAppeningPathcomponent:@”coredataprojectTemplate.sqlite“

  3. 实际的sqlite持久性文件的位置和何时创建?我无法在模板中看到的代码,这将是什么?您是否必须添加自己的代码来创建此项?

有帮助吗?

解决方案

1 I assume you are referring to the following:

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

This format allows you to create accessors for a variable of a different name (i.e. the getter / setter accessor names can be different from the variable name). If the variable has not been previously defined then the synthesize operation will automatically create a synthesized instance variable for you.

2 As you've inferred from the filename, the default persistent store for CoreData is SQLite; however it's not limited to this one type. When creating your persistent store for the first time you send a message to the persistentStoreCoordinator in which you set the addPersistentStoreWithType to one of the following:

NSSQLiteStoreType
NSBinaryStoreType
NSInMemoryStoreType

To be honest, unless you have a good reason to change it you're probably best just sticking with SQLite.

3 The location URL of the persistent store is built by establishing the directory that the application is executing within (with a message to applicationDocumentsDirectory - written elsewhere in your code) then appending the filename of the persistent store to it via the URLByAppendingPathComponent parameter. You can modify this to add sub-folders or changing the filename if you wish.

其他提示

  1. The modern Objective-C runtime can synthesize not only accessors but also storage for properties. You can specify the ivars that back your properties yourself if you want to, or you can let the runtime figure it out.

  2. SQLite is the only backing store for Core Data supported in iOS.

  3. If I'm not mistaken, the file will get created (if it doesn't already exist) when the managed object context is saved. The URL is associated with the persistent store when it's added to the persistent store coordinator.

3) That storeURL is the name and location of the Core Data database. If you want to put it elsewhere just change the base directory. You may want to consider the Application Support directory.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top