1

我有一个 UITableView 列出了来自不同用户的评论。我将所有评论保存到 Core Data。我还实现了 NSFetchedResultsController。评论的属性之一是用户名 - 发表评论的用户。

我只希望用户能够删除他们自己的评论。这是我的代码:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
  //Only be able to delete user generated cells
  Comment *comment = [[self fetchedResultsController]objectAtIndexPath:indexPath];
  if (comment.username != self.username) {
    return NO;
  }
  return YES;
}

在 viewDidLoad 中调用 performfetch

当 CommentsViewController 被加载并创建新的评论时,该功能就起作用了。但是,如果之前有任何评论,即使用户创建了这些评论,也无法编辑这些评论。

对可能发生的事情有任何想法吗?

4

1 回答 1

2

我认为问题在于对用户名的深度平等检查。假设这些是字符串,您不想测试它们是否是同一个对象(它们将在一次提取中,并且不会在运行之间)。你想测试浅的平等......

if (![comment.username isEqualToString:self.username]) { // and so on...
于 2012-06-20T21:39:22.127 回答