2011-03-04 8 views
0

私はCoreDataBooksを使いこなし、現在の3つに加えてsqliteファイルに別のフィールドを追加しようとしています。 .xcdatamodelに属性文字列を追加し、book.h、book.m、およびローカライズされたファイル(すべてsqliteファイルを変更せずに)で宣言しました。しかし、これらの変更は、sqliteでフィールドを追加することはありませんし、アプリケーションは決して読み込まれません。私は、シミュレータでアプリを削除してビルド→クリーンアップを実行するたびに、無駄にすることはありません。私はまた、.x​​cdatamodelと一致するようにsqliteファイルを変更しようとしましたが、アプリケーションはまだ読み込まれません。CoreDataBooksに文字列属性を追加する

これはCoreDataBooksまたは私の問題ですか?これを行う前にアプリをバージョンアップする必要がありますか?私がシミュレータでアプリを削除している限り、そうする必要はありません。

CoreDataBooksでこの4番目の文字列属性(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は、このたびのアプリは、それがバンドルからコピーされたSQLiteのファイルを見つけられないことを私のために意味しますCoreDataBooks.xcdatamodelの変更によって変更されていませんでした。

別のアプローチを使用するか、バンドルされたsqliteファイルを変更してみてください。

+0

良いキャッチ..... –

+0

あなたのお返事ありがとう!ですから、.xcdatamodelで属性を追加するのではなく、sqliteファイルを変更できますか? – Benjamin

+0

sqliteファイルを削除(または名前を変更)しようとしましたが、期待通りの変更を加えてsqliteファイル "CoreDataBooks.sqlite"を再作成しません。 – Benjamin

1

アプリが読み込まれない場合、データモデルに問題がある可能性があります。コンソールにエラーメッセージがないか確認してください。

そして、sqliteまたはcore-dataを使用するかどうかを決定する必要があります。 sqliteファイルの変更を監視したり、sqliteファイルにフィールドを追加する場合は、コアデータではなくsqliteを使用する必要があります。

コアデータを使用する場合は、sqliteファイルを無視する必要があります。

関連する問題