获取结果两次返回nil

时间:2012-09-12 13:48:43

标签: ios core-data nsfetchrequest

假设我的项目中有3个文件:

  1. 数据模型文件,处理核心数据和获取信息
  2. viewController 1
  3. viewController 2
  4. 在模型文件中,我得到的结果如下:

    - (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元素)。 但这次结果为零。我在这做错了什么?我应该先手动发布结果吗?没有其他错误出现。 感谢。

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的那样:

experimentModel *model;不分配任何内容;它只是声明一个变量存在。某处,您必须将模型设置为第一个控制器的实际对象(并且可能不会为第二个控制器执行该操作)。

向nil对象发送消息是得到预期结果的常用方法。 :)