将NSManagedObject设置为nil;

时间:2013-08-19 14:59:41

标签: ios objective-c core-data nsfetchedresultscontroller

点击tableView中的单元格,我正在创建新的NSManagedObject实例并回滚到之前的viewController

User *user = [self.fetchedResultsController objectAtIndexPath:indexPath];
[self.delegate setSupervisorGUID:user.server_id supervisorTitle:user.name];
[self.navigationController popViewControllerAnimated:YES];

在同一个viewController我有一个取消按钮还有什么回滚到上一个viewController但没有设置新对象(归零用户对象):

[self.delegate setSupervisorGUID:[NSNull null] supervisorTitle:@"User not set"];
[self.navigationController popViewControllerAnimated:YES];

这种方法可以解决问题,但我认为这在逻辑上是不正确的,我也在这里发出警告。我怎么能以正确的方式做到这一点?

更新

警告是:

  

不兼容的指针类型将'NSNull *'发送到类型的参数   'NSString *'

以下是-setSupervisorGUID:supervisorTitle:

的定义
- (void) setSupervisorGUID:(NSString *) supervisorId supervisorTitle:(NSString *) supervisorTitle
{
    if ([formData[@"visit_type_id"] isEqualToString:supervisorId]) return;

    [formData setObject:supervisorId forKey:@"supervisor_id"];
    [formData setObject:supervisorTitle forKey:@"supervisorTitle"];
    supervisorCell.detailTextLabel.text = supervisorTitle;
    [self.tableView reloadData]; 
}

1 个答案:

答案 0 :(得分:1)

NSNull * NSString *不兼容。但你可以打电话

[self.delegate setSupervisorGUID:nil supervisorTitle:@"User not set"];

而是在委托方法中检查supervisorId == nil