0

通过点击一个单元格,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]; 
}
4

1 回答 1

1

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

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

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

于 2013-08-19T15:57:56.633 回答