2011-08-15 9 views
1

私はコアデータを初めて使用しているので、少し問題があります。私はオブジェクト(最近のアドレス)を格納しようとしています。ここに私のコードです:コアデータを使用してオブジェクトを保存する

NSError *error; 
recentSearch = [[RecentSearch alloc] init]; 
[recentSearch setName:[searchTextField text]]; 
[recentSearch setDate:[NSDate date]]; 
NSManagedObjectContext *context = [recentSearch managedObjectContext]; 

if(![context save:&error]) 
{ 
    NSLog(@"Not saved. Error: %@",[error description]); 
} 
else 
{ 
    NSLog(@"Saved"); 
} 

私はこれがうまくいくとは思わない。このコードに何か問題はありますか? recentSearchはNSManagedObjectです。私のコードはNot saved. Error: (null)を印刷します。どんな助けでも大歓迎です。

答えて

3

これは簡単にわかります。 NSManagedObjectのinitWithEntity:insertIntoManagedObjectContext:を使用してNSManagedObjectを初期化し、実際にコンテキストに挿入する必要があります。 The NSManagedObject class referenceApple's Core Data programming guideをご覧ください。私は両方とも非常に有益であることが分かった。

+0

ああ、持っています。ありがとう!私は1行が欠けていることを知っていた。感謝します! – Mason

1

どこからコンテキストを取得しましたか?

NSManagedObjectを非標準的な方法で作成します。

通常、CoreDataにNSEntityDescriptionを指定してNSManagedObjectを取得するように依頼します。 あなたはNSEntityDescription entityForNameを使用してこれを行うことができます。inManagedObjectContext:self.mocは、アプリケーションの初期化に作成したNSManagedObjectのコンテキストでショートカット

NSEntityDescription *entity = [NSEntityDescription entityForName:@"RecentSearch" inManagedObjectContext:self.moc]; 

を。 アプリケーションデリゲートでCoreDataをサポートするプロジェクトを開始すると、サンプルコードが含まれています。

基本的には、ここで定義されているエンティティのコアデータモデル(NSManagedObjectModel)を要求します。 上記は、CoreDataで何かを照会するために使用されます。ショートカット

NSManagedObject *myManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"RecentSearch" inManagedObjectContext:self.moc]; 

今すぐあなたの記憶に新しい管理対象オブジェクトが存在して使用するCoreDataストレージに新しいオブジェクトを挿入するには

。そのオブジェクトはデータでいっぱいになり、[self.moc save:& error]を呼び出すと、そのオブジェクトが基になる永続ストレージに書き込まれます。

これは少し役に立ちます。

関連する問題