NSManagedObject
a の内容を辞書に一時的に保存する必要があります。コア データには独自のメモリ管理手順があるため、 のフィールドへの強力なポインターを保持したくありませんNSManagedObject
。この時点で重要なのは値のみです (値はビュー コントローラー間で渡され、MOC は異なります)。メモリの再利用がいつ行われるかを制御したいので、弱いポインタも作成できません。
私はいくつかのことを試しましたが、すべて失敗したか、目的に適合しませんでした。
重複
[[myNSMO alloc] initWithEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:myNSMO.managedObjectContext] insertIntoManagedObjectContext:nil];
しています動作していますが、私のアプリのデザインには適合しません (詳細には入りません)を使用して
NSDictionary
から を生成します。NSManagedObject フィールドのアドレスを含む辞書を返すため、これは問題です。NSManagedObject
[myNSMO dictionaryWithValuesForKeys:<#(NSArray *)#>]
NSDictionary
このように、copyWithZone を使用して各キー値を 入力する作成し[myDictionary setObject:[myNSMO.field copyWithZone:nil] forKey:@"Key"];
ますどちらも機能しません。まだフィールドアドレスを取得しています...[myDictionary setObject:[NSString stringWithFormat:@"%@",myNSMO.field ] forKey:@"Key"];
It's fine this time, I do get new memory allocation.で各フィールドを手動で入力します 。しかし、これを手動でコーディングするには非常に時間がかかります...
誰かがそれを行う賢い方法を見つけた可能性はありますか? オプション 1) が機能しなかった理由は、辞書をキューとして使用しているためです。最初にオブジェクトのコピーを保存し、必要に応じてエントリをポップアウトします。次に、その特定の辞書エントリのコピーが、要求元のメソッドに返されます。NSManagedObject
問題は、を使用して作成されたのコピーを作成できないことです[[...] insertIntoManagedObjectContext:nil];
解決策はありますか?