NSDataを使用してコアデータに配列を保存しようとしていますが、ManagedObjectContextにはオブジェクトが0個あり、呼び出すとNULLとして表示されます。私はイベントと3つの属性(chatArray、...、...)というエンティティを持っています。私は11時間試してみることができません。 NSDataが正しいので、私は間違って設定していると私は信じています。どのように私はこれを設定する必要がありますか?コアデータ管理オブジェクトのコンテキスト保存問題
UPDATE
私はチャットアプリケーションを開発していますし、私は(これは、データの配列です)テーブルビューにチャットメッセージを持っています。アプリを終了して再読み込みすると、すべてのチャット履歴を保存する必要があります。私は、文字列として入ってくるメッセージをテーブルの配列に追加します。配列を作成しなかった場合、コアデータにテキストの文字列としてメッセージを追加しました。アプリケーションをリロードするときに、テーブルビューの配列にどのように追加するのですか?
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObject *managedObject;
//
NSArray *array = [[[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil]autorelease];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
NSLog(@"data %@",data);
NSLog(@"Array %@",[NSKeyedUnarchiver unarchiveObjectWithData:data]);
[(Event*)managedObject setValue:data forKey:@"chatArray"];
if ([self managedObject])
{
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
[(Event *)managedObject setChatArray:data]; }
else {
Event *event = [[[Event alloc] initInsertingIntoManagedObjectContext:managedObjectContext]autorelease];
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
[event setChatArray:data];
}
NSError *error;
[managedObjectContext save:&error];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:[(Event*)managedObject valueForKey:@"chatArray"]];
NSLog(@"chatArray %@",myArray);
私はここで何が起きると思われるのか分かりません。あなたはmanagedObjectと[self managedObject]を持っています。私はそれらが同じものであると仮定しているのでしょうか?しかし、それを確認する前にメッセージを送信してください。その後何が起こるのですか?それがnilでない場合、モデルに挿入されるコードは実行されません。そのため、以前にmanagedObjectをモデルに挿入したかどうかはわかりません。どちらの場合でもフェッチ要求を作成しますが、実行することはありません。どんなコードパスをとっていますか?コンテキストを保存した後、エラーの値をチェックしましたか? – morningstar
それは2番目のものです。そしてそれはエラーはありません... –