0

レコードを配列に保存し、CoreData から削除したいと考えています。NSCopying を使用してみましたが、NSManagedObject では copyWithZone が機能しないようです。私は本当に立ち往生しています。どんな助けでも大歓迎です。

4

1 に答える 1

1

NSManagedObject のすべてのフィールド値をディクショナリにコピーし、これらのディクショナリを配列に保存します。

それを取得するために使用できる NSMutableObject カテゴリに実装できる小さなルーチンをまとめました。

(私は現在Macコンピューターを使用していないため、コードにタイプミスがある可能性があることに注意してください。ただし、それ以外は正常に動作するはずです)。

-(NSDictionary*)retrieveAsDict {
  NSMutableDictionary *aux = [[NSMutableDictionary alloc] init];
  NSDictionary *attributes = [self attributesByName];
  NSArray *attributeNames = [attributes allKeys];

  for (NSString *key in attributeNames) {
    [aux setValue:[self valueForKey:key] forKey:key];
  }

  NSDictionary *ret = [NSDictionary dictionaryWithDictionary:aux];

  // Uncomment this if not using ARC
  //[aux release];

  return(ret);
}

さらに明確にする必要がある場合は、必ずコメントしてください。すぐに回答します。

于 2011-11-16T13:49:37.257 に答える