【发布时间】:2012-11-02 15:33:33
【问题描述】:
我有一个表格视图,其中包含许多我希望能够删除的行。填充 tableview 的数据存储在 NSMutableArray 中。要删除我调用的一行数据:
- (void)deleteFromArray:(NSUInteger) number{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; //load NSUserDefaults
NSMutableArray *storedArray = [[ NSMutableArray alloc] init];
storedArray = [prefs objectForKey: @"mydata"];
[storedArray removeObjectAtIndex:number];
[prefs setObject:storedArray forKey:@"mydata"];
[storedArray release];
[prefs synchronize];
}
来自
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
subscribe *subscribeclass = [subscribe alloc];
[subscribeclass deleteFromArray: indexPath.row];
[myTableView reloadData];
}
}
这在我第一次删除一行时效果很好。但是当我删除第二行时,应用程序在 deleteFromArray 中的以下行崩溃:
[storedArray removeObjectAtIndex:number];
任何想法为什么?
【问题讨论】:
-
'-[__NSCFArray removeObjectAtIndex:]:变异方法发送到不可变对象'
-
显然你的
storedArray是NSArray,所以你不能调用那个方法。 -
你在数组中存储了什么?
-
hukir 的回答解决了它!谢谢大家! :)
标签: ios uitableview cocoa-touch nsmutablearray