Сохранить при сбоях NSManagedObject - PullRequest
0 голосов
/ 02 мая 2011

У меня странная проблема при попытке использовать подкласс NSManagedObject.У меня есть код, который выглядит примерно так:

[self.navigationController popViewControllerAnimated:NO];
MyController *myController = [[MyController alloc] init];
myController.managedObject = managedObject;

Довольно просто, верно?Но почему-то вылетает в синтезированной функции для установки «managedObject».Я попытался заменить функцию чем-то вроде этого:

- (void) SetManagedObject:(NSManagedObjectSubClass*) obj
{
   if ( managedObject )
      [managedObject release];

   managedObject = obj;
-->   [managedObject retain];
}

И это вылетает при сохранении вызова ... Я в тупике и не знаю, с чего начать отладку.

1 Ответ

1 голос
/ 02 мая 2011

Есть несколько проблем с вашим кодом:

  • Если вы предоставляете пользовательский установщик, ваше свойство не является синтезированным свойством (удалите SetManagedObject: и используйте вместо него директиву @synthesized)
  • Ваш пользовательский установщик освобождает объект, прежде чем он его удерживает.Таким образом, managedObject может быть освобождено при отправке сообщения сохранения (это сбой)
  • SetManagedObject: имеет неправильный регистр.Используйте s etManagedObject:, если вы решите предоставить пользовательский установщик.
  • Не используйте NS в качестве префикса для своих пользовательских подклассов (NS используется Apple).

I 'буду использовать синтезированное свойство.Удалите ваш установочный код, объявите @property(retain) XYManagedObjectSubClass managedObject;в вашем .h файле и используйте @synthesize в реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...