2012-02-10 2 views
0

Создается исходный объект, вставленный в ManagedObjectContext, и контекст сохраняется. Затем этот объект устанавливается как свойство одноэлементного класса, управляющего стеком CoreData.Исходный объект CoreData имеет неправильный тип.

Этот оригинальный объект, ссылающийся на другой класс, имеет неправильный тип (NSCFString). С другой стороны, если объект извлекается, то он является правильным классом и отлично работает.

NSArray *pdaSetupRecords = [results fetchedObjects]; 
//If this is the initial launch of the application, create 
//a PDASetup object and save the context, otherwise set 
//pdaSetup to the fetched instance. 
if ([pdaSetupRecords count] < 1) { 
    PDASetup *newPdaSetup = (PDASetup *) [NSEntityDescription insertNewObjectForEntityForName:@"PDASetup" inManagedObjectContext:managedObjectContext]; 
    [self saveContext]; 
    pdaSetup = newPdaSetup; 
    NSLog(@"SystemUtility - PDASetup object created and saved."); 
} else { 
    pdaSetup = [pdaSetupRecords objectAtIndex:0]; 
} 

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

Любые мысли?

ответ

0

Вы имеете в виду, чтобы написать:

pdaSetup = [newPdaSetup retain]; 

или

self.pdaSetup = newPdaSetup; //with a retained @property 

Является ли ваше приложение врезаться говорит вам тип является NSCFString? Возможно, адрес памяти был перезаписан строкой.

+0

pdaSetup сохраняется. –

+0

Вы правы, установив self.pdaSetup исправил проблему, как и другое предложение. Я не понимал, что настрой себя. * Сделал разницу. –

+0

Мне нравится, когда я прав от догадки ... Вам нужно снова прочитать правила управления памятью и использовать @properties. self. * вызывает свойство access/mutator свойства переменной, сохраняя переменную, если вы используете «сохранить» в свойстве. Альтернативно ... начните использовать ARC. – bandejapaisa

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