初始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?内存地址可能被字符串覆盖。
保留pdaSetup。 – 2012-02-10 19:55:07
你是对的,设置self.pdaSetup可以纠正问题,其他建议也一样。我没有意识到设置自我。*有所作为。 – 2012-02-10 20:04:22
我喜欢它,当我从猜测中正确的时候...您需要再次阅读内存管理规则并使用@properties。 self。*调用变量的属性访问器/增变器,如果在属性上使用“保留”,则保留该变量。或者...开始使用ARC。 – bandejapaisa 2012-02-10 23:25:28