2011-03-04 178 views
0

我一直在與CoreDataBooks搞混,並試圖添加另外一個字段到當前的三個sqlite文件。我在.xcdatamodel中添加了屬性字符串,並將其聲明在book.h,book.m和本地化文件中(全部不更改sqlite文件)。但是,這些更改從不在sqlite中添加字段,並且應用程序從不加載。每次我在模擬器中刪除應用程序並執行構建 - >清理,但無濟於事。我也嘗試更改sqlite文件以匹配.xcdatamodel,但應用程序仍然無法加載。將字符串屬性添加到CoreDataBooks

這是CoreDataBooks還是我的問題?在做這件事之前我需要版本的應用程序嗎?似乎我不應該只要我在模擬器中刪除應用程序。

任何人都知道我可以在CoreDataBooks中添加這個字符串屬性(sqlite字段)嗎?

在此先感謝!

回答

0

想通了。該應用程序正在創建新的sqlite文件,我只需要在模擬器文件中找到它。 Grrrr,當我做正確的事情時,浪費了很多時間。經驗教訓我猜:)

1

我在CoreDataBooksAppDelegate.m發現了這樣一個很好的一段代碼在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]; 
    } 
} 

:154,這意味着對我來說,每一次的應用程序沒有找到它是從包複製源碼文件它沒有被修改CoreDataBooks.xcdatamodel修改。

嘗試使用另一種方法,或者只是修改捆綁的sqlite文件。

+0

好趕上..... –

+0

感謝您的迴應!所以我可以改變sqlite文件,而不是通過.xcdatamodel添加屬性? – Benjamin

+0

我試過刪除(或重命名)sqlite文件,但該應用並沒有像我期望的那樣改變重新創建sqlite文件「CoreDataBooks.sqlite」。 – Benjamin

1

如果應用程序未加載,那麼您的數據模型可能有問題。檢查控制檯是否有錯誤消息。

而且您必須決定是否要使用sqlite或核心數據。如果你想監視sqlite文件的更改或添加字段到sqlite文件,你應該使用sqlite而不是核心數據。

如果你想使用核心數據,你應該忽略sqlite文件。