我一直在搞弄CoreDataBooks,并尝试在当前文件之外添加另一个字段到sqlite文件。我已经在.xcdatamodel中添加了属性字符串,并在book.h,book.m和本地化文件中进行了声明(所有这些都无需更改sqlite文件)。但是,这些更改永远不会在sqlite中添加该字段,并且该应用程序也永远不会加载。每次我在模拟器中删除该应用程序并执行构建->清理,但无济于事。我也尝试更改sqlite文件以匹配.xcdatamodel,但该应用程序仍然无法加载。

这是CoreDataBooks还是我的问题?我需要先对应用程序进行版本控制吗?似乎只要我要在模拟器中删除该应用程序就不必。

有人知道如何在CoreDataBooks中添加第四个字符串属性(sqlite字段)吗?

提前致谢!

最佳答案

我在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文件时,会从捆绑包中复制该文件,而该文件包并未通过修改CoreDataBooks.xcdatamodel进行更改。

尝试使用另一种方法,或者只是修改捆绑的sqlite文件。

10-08 18:12