【发布时间】:2016-01-12 09:41:10
【问题描述】:
我有 allSpecialities 数组和 selectedSpecialities 数组。我正在从服务器下载这些数组,将它们解析为对象并将它们添加到这些数组中。现在,我想选中/取消选中一些专业。我试过containsObject,但这不起作用,因为这些对象不在同一个内存位置。这是我到目前为止所做的代码,它正在工作,但我有问题如何将它们添加到这个数组中。
在cellForRowAtIndexPath:
for (Speciality *specTemp in self.selectedSpecialities) {
if (speciality.specialityId == specTemp.specialityId) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
break;
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
在didSelect:
Speciality *speciality = [[Speciality alloc]init];
speciality = self.allSpecialities[indexPath.row];
NSMutableArray *tempSelectedSpecialities = [[NSMutableArray alloc]initWithArray:self.selectedSpecialities];
int i=0;
for (Speciality *tempSpeciality in tempSelectedSpecialities) {
if (tempSpeciality.specialityId == speciality.specialityId) {
[self.selectedSpecialities removeObjectAtIndex:i];
}
else {
}
i++;
}
[self.delegate companySpecialities:self.selectedSpecialities];
[self.specialitiesTableView reloadData];
【问题讨论】:
-
初学者错误:在 didSelect 中,您创建了一个 Specialty 对象,然后立即将其覆盖。不要那样做。
-
你能解释一下如何以其他方式做到这一点吗?
-
Speciality *speciality = self.allSpecialities[indexPath.row];像这样。 -
好的,但这并没有解决我的问题。
-
如果你想让
containsObject:工作,你需要实现isEqual:,我认为,hash。
标签: ios objective-c nsmutablearray