假设我的项目中有3个文件:
在模型文件中,我得到的结果如下:
- (NSArray *) getColonyData
{
NSManagedObjectContext *cxt = [self managedObjectContext];
NSEntityDescription *colonyDesc = [NSEntityDescription entityForName:@"Colony" inManagedObjectContext:cxt];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:colonyDesc];
NSError *error;
NSArray *colonyResults = [cxt executeFetchRequest:request error:&error];
return colonyResults;
}
我在第一个viewController的viewDidLoad部分运行这部分代码,得到了正确的结果:
NSArray *colonyResults = [model getColonyData];
if (colonyResults != nil)
{
colonyName.text = [[colonyResults objectAtIndex:0] valueForKey:@"name"];
}
else
{
colonyName.text = @"nothing setup yet";
}
然后我通过segue移动到第二个viewController,当我执行完全相同的代码(当然更新不同的UI元素)。 但这次结果为零。我在这做错了什么?我应该先手动发布结果吗?没有其他错误出现。 感谢。
答案 0 :(得分:0)
正如评论中所建议的那样:
experimentModel *model;
不分配任何内容;它只是声明一个变量存在。某处,您必须将模型设置为第一个控制器的实际对象(并且可能不会为第二个控制器执行该操作)。
向nil对象发送消息是不得到预期结果的常用方法。 :)