2013-03-06 2 views
0

Im используя NSManagedObject в качестве атрибута в моем ViewController, заявил так:NSManagedObject становится нулевым

@property(retain, nonatomic)NSManagedObject *person; 

Im распространяющегося содержание выборки в UITableView, когда пользователь вводит в контакт он ищет, это то, что происходит:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
     self.person = [contacts objectAtIndex:indexPath.row]; 

Контакты содержит результат выборки, который делается так:

NSArray *contactsArray; 
NSError *error; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

NSManagedObjectContext *context = [(OAuthStarterKitAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 

NSEntityDescription *entity = [NSEntityDescription 
           entityForName:@"Contacts" inManagedObjectContext:context]; 



[fetchRequest setEntity:entity]; 
testForTrue = [NSPredicate predicateWithFormat:@"SOME CONDITION"]; 

[fetchRequest setPredicate:testForTrue]; 
    [fetchRequest setFetchLimit:10]; 



contactsArray = [[NSArray alloc]initWithArray:[context executeFetchRequest:fetchRequest error:&error]]; 

Когда пользователь удаляет контакт, self.person имеет это значение, но когда я пытаюсь использовать это значение в другом методе, оно равно нулю, а адрес - 0x000000. Это происходит только на iOS 5, на iOS 6 человек имеет значение выбранного контакта, и я могу использовать его в другом месте.

Любые идеи?

Спасибо.

ответ

0

Вместо того, чтобы получать NSManagedObject, которая всегда зависит от жизненного цикла контекста я просто хранящегося де NSManagedObjectID и затем получить NSManagedObject с помощью функции objectWithID. И это сработало!

+0

Иногда вы должны изобретать что-то более умное, чем просто хранить идентификатор. Например, попробуйте создать несколько записей и попробуйте отправить любой запрос на выборку на каждом «rowForIndexPath:», и вы увидите, как он медленный, даже с идентификаторами – Gargo

Смежные вопросы