Сохранить массив результатов CoreData даже после его удаления из CoreData - PullRequest
0 голосов
/ 16 ноября 2011

Я хочу сохранить записи в массиве и удалить их из CoreData. Я пытался использовать NSCopying, но кажется, что copyWithZone не работает на NSManagedObject. Я действительно застрял, любая помощь будет оценена.

1 Ответ

1 голос
/ 16 ноября 2011

Скопируйте все значения полей вашего 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);
}

Если вам нужны дополнительные разъяснения, обязательно прокомментируйте, и я скоро отвечу.

...