我一直在搞乱CoreDataBooks并尝试在sqlite文件中添加另外一个字段以及当前的三个字段。我在.xcdatamodel中添加了属性字符串,并在book.h,book.m和本地化文件中声明了它(所有这些都没有更改sqlite文件)。但是,这些更改从不在sqlite中添加字段,并且应用程序永远不会加载。每次我在模拟器中删除应用程序并执行构建时 - >干净,但无济于事。我也尝试更改sqlite文件以匹配.xcdatamodel,但应用仍然无法加载。
这是CoreDataBooks或我的问题吗?在这之前我是否需要对应用程序进行版本设置?只要我在模拟器中删除应用程序,我似乎不应该这样做。
任何人都知道如何在CoreDataBooks中添加第四个字符串属性(sqlite字段)?
提前致谢!
答案 0 :(得分:1)
我在CoreDataBooks
中找到了一段很好的代码NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"CoreDataBooks.sqlite"];
/*
Set up the store.
For the sake of illustration, provide a pre-populated default store.
*/
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"CoreDataBooks" ofType:@"sqlite"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
在 CoreDataBooksAppDelegate.m:154 中,这对我来说,每次应用程序找不到sqlite文件时,都会从bundle中复制它,而不会通过修改 CoreDataBooks.xcdatamodel <来更改它/强>
尝试使用其他方法,或者只修改捆绑的sqlite文件。
答案 1 :(得分:1)
如果该应用未加载,那么您的数据模型可能有问题。检查控制台是否有错误消息。
您必须决定是否要使用sqlite或核心数据。如果要监视sqlite文件的更改或向sqlite文件添加字段,则应使用sqlite而不是core-data。
如果要使用核心数据,则应忽略sqlite文件。
答案 2 :(得分:0)
想出来。应用程序WAS创建新的sqlite文件,我只需要在模拟器文件中找到它。 Grrrr,当我正确地做所有事情时浪费了太多时间。经验教训我猜:)