2011-10-24 10 views
0

私はCore Dataの最初のステップをやっているだけで、シンプルなplistを使ってプログラムのいくつかのプリファレンスデータを保存するコードを変更したいと思います。代わりにコアデータを使用したいと思います。ちょうど教育的理由から。エンティティ(コアデータ)にデフォルトレコードを生成する方法は?

私は基本的に "言語"、 "デバッグ情報"、 "サーバーのIP"などのような属性の束で "セットアップ"という名前のエンティティを作成しました。複数の設定を保持する意味がないため、エンティティには1つのデータレコードしか存在しません。

次に、GUIウィンドウ上でエンティティをAltキーを押しながらドラッグして、インターフェイスビルダにGUIを作成しました。私は "単一のアイテムビュー"を選んだ。私はコードを実行することができますが、問題があります:

私はcontolsの内容を変更できません。エンティティにレコードが存在しないため単純に仮定します。だから私の質問は、どのように "デフォルト"のエントリを作成することです?私は、 "master/detail view"を使用したくないのです。単に、一つのデータレコードが必要です。これは、storedata-fileがまだ作成されていない場合に自動的に生成されるべきです。

+0

"コアロジック"?あなたは "コアデータ"を意味しますか? –

+0

はい、混乱のために申し訳ありません:( –

答えて

0

私はこれまでのところ問題を解決しました。私はメソッド " - (NSManagedObjectContext *)managedObjectContext"に次の行を追加しました。これは、メソッドの最初の呼び出し時にエンティティにデフォルトレコードを作成します。属性の値は、データモデルで設定されます。

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Setup" inManagedObjectContext:managedObjectContext]]; 
[request setIncludesSubentities:NO]; //Omit subentities. Default is YES (i.e. include subentities) 
NSError *err; 
NSUInteger count = [managedObjectContext countForFetchRequest:request error:&err]; 
if(count==NSNotFound || count==0) 
{ 
    [NSEntityDescription insertNewObjectForEntityForName:@"Setup" inManagedObjectContext: managedObjectContext]; 
} 

[request release]; 

私はそれが正しい方法であるかどうかは分かりませんが、特に私はそれが正しい場所ではないかと思います。私はコアデータが設定された後に呼び出されるメソッドが欠けています。どんな提案も大歓迎です!

関連する問題