以下代码在第一次调用时工作正常。但如果我删除排序,它甚至可以在第一次使用。但是一旦启用了排序,我就无法替换keywordscontroller中的值。 (keywordscontroller是一个NSArrayController)
[newkwmutabledict setObject:[NSString stringWithFormat:@"%@",[kwmutabledict valueForKey:@"keyword"]] forKey: @"keyword"];
[newkwmutabledict setObject:[NSString stringWithFormat:@"%f",newnum] forKey: @"order"];
[keywordscontroller.content replaceObjectAtIndex:selectedRow withObject:newkwmutabledict] ;
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES selector:@selector(localizedStandardCompare:)];
[keywordscontroller setSortDescriptors:[NSArray arrayWithObject:sort]];
[singleKeywordTable reloadData];
基本上,最后一行代码导致第三行代码不再起作用。为什么呢?
- 编辑 -
我的猜测是keywordscontroller.content与keywordscontroller.arrangedobjects有不同的排序。但是,如果我尝试在arrangeobjects中替换某些内容,则会失败并显示消息[_NSControllerArrayProxy replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance
这里要求的是araycontroller的日志:
content = (
{
keyword = female;
order = "1.000000";
},
{
keyword = hat;
order = "2.000000";
},
//..
{
keyword = "looking at camera";
order = "41.000000";
}