2013-08-19 62 views
0

是通过轻敲细胞在tableView我创造新的NSManagedObject实例并做回滚到以前viewController:在同一viewController将NSManagedObject设置为零;

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

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

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

这样的伎俩,但我认为这是逻辑上不正确,我也有一个警告这里。我怎样才能以正确的方式做到这一点?

UPDATE

警告是:

不相容指针类型发送 '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]; 
} 
+0

如何定义'setSupervisorGUID:supervisorTitle:'委托方法,并得到什么警告? –

+0

'NSNull'旨在*仅用于表示数组中的*空*值。 – danielbeard

+0

@MartinR,请参阅更新后的帖子。 – Alex

回答

1

NSNull *NSString *不兼容。但是您可以拨打

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

而是在代理方法中检查supervisorId == nil