我正在尝试从属性编辑可变数组,但似乎无法直接使其工作。考虑以下似乎有效的代码,但似乎也非常低效;我必须复制整个属性数组才能在一个对象中进行更改。为什么我可以更改整个“carNames”数组,但不能对其中一个对象进行更改?
感谢您提供的任何亮点......
// CarTableViewController.h
// ...
@interface CarTableViewController : UITableViewController {
NSMutableArray *carNames;
}
@property (nonatomic, retain) NSMutableArray *carNames;
-(IBAction)addCarButton:(id)sender;
// ...
// --------------------------------------
// -------CarTableViewController.m-------
// ...
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Could I somehow run the removeOjectAtIndex:
// directly on the carNames Property? - this code works...
NSMutableArray *mutablecarNames = [carNames mutableCopy];
[mutablecarNames removeObjectAtIndex:indexPath.row];
carNames = [mutablecarNames copy];
[mutablecarNames release];
// This code doesn't work... Why?
// [carNames removeObjectAtIndex:indexPath.row];
}
// ...
答案 0 :(得分:7)
您将carNames
设置为[mutableCarNames copy]
的结果,这是一个不可变的NSArray。您想要mutableCopy
。
答案 1 :(得分:1)
为什么你不只是打电话给[carNames removeObjectAtIndex:indexPath.row]
?
这应该可以正常工作,因为它是一个可变数组。