初始CoreData对象的类型错误。

问题描述:

创建一个初始对象,插入到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对象,则一切正常。

有什么想法?

你的意思写:

pdaSetup = [newPdaSetup retain]; 

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

是您的应用程序崩溃告诉你的类型是NSCFString?内存地址可能被字符串覆盖。

+0

保留pdaSetup。 – 2012-02-10 19:55:07

+0

你是对的,设置self.pdaSetup可以纠正问题,其他建议也一样。我没有意识到设置自我。*有所作为。 – 2012-02-10 20:04:22

+0

我喜欢它,当我从猜测中正确的时候...您需要再次阅读内存管理规则并使用@properties。 self。*调用变量的属性访问器/增变器,如果在属性上使用“保留”,则保留该变量。或者...开始使用ARC。 – bandejapaisa 2012-02-10 23:25:28