1

さまざまなユーザーからのコメントを一覧表示するUITableViewがあります。すべてのコメントをCoreDataに保存します。NSFetchedResultsControllerも実装しました。コメントのプロパティの1つは、ユーザー名(コメントを作成したユーザー)です。

ユーザーが自分のコメントを削除できるようにしたいだけです。これが私のコードです:

- (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;
}

PerformfetchはviewDidLoadで呼び出されます

CommentsViewControllerがロードされ、新しいコメントが作成されると、機能が機能します。ただし、以前にコメントがあった場合は、ユーザーが作成したものであっても編集できません。

何が起こっているのかについて何か考えはありますか?

4

1 に答える 1

2

問題は、ユーザー名の詳細な同等性チェックだと思います。それらが文字列であると仮定すると、それらがまったく同じオブジェクトであるかどうかをテストする必要はありません (それらは 1 回のフェッチで取得され、実行間では行われません)。浅い等価性をテストしたい...

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