我有 UITableViewController,它有类似推特的帖子和类似的按钮。我所做的是,如果成功尝试将喜欢的计数更新 + 1,则单击喜欢按钮时。除了更新部分之外,我做了上述所有方法。
我得到由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object' 错误。
这是我的代码。
- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath{
FeedTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier"Cell" forIndexPath:indexPath];
NSDictionary *feedList = [liveFeeds objectAtIndex:indexPath.row];
//liveFeeds is NSMutableArray
cell.likeCount.text = [feedList objectForKey"likes"];
cell.like.tag = indexPath.row;
[cell.like addTarget:self actionselector(likeClicked forControlEvents:UIControlEventTouchUpInside];
}
-(void) likeClickedUIButton*)sender{
//Here im using AFNetworking and getting JSON response.
//After that im doing following to update the like
NSMutableDictionary* feedList = [liveFeeds objectAtIndex:sender.tag];
NSString *oldLike = [feedList objectForKey"likes"];
int newLike = [oldLike intValue] + 1;
NSString *strFromInt = [NSString stringWithFormat"%d",newLike];
NSLog(@"updated like %@",strFromInt); // up to this it works
[feedList setObject:strFromInt forKey"likes"]; // in here it get crashe
[self.tableView reloadData];
}
我想做的是。 liveFeeds 使用 Like Count 更新数组并重新加载表。我做错了吗?或者有什么简单的方法可以做到这一点?
Best Answer-推荐答案 strong>
[liveFeeds objectAtIndex:sender.tag] 很可能是 NSDictionary ,而不是 NSMutableDictionary 。所以你不能改变它的内容。
使用 [liveFeeds objectAtIndex:sender.tag] 的内容构建 feedlist :
NSMutableDictionary* feedlist = [NSMutableDictionary dictionaryWithDictionary:[liveFeeds objectAtIndex:sender.tag]]
关于ios - UITableViewCell - 更新 NSMutableDictionary 值,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34880662/
|