Pon*_*ays 0 cocoa-touch uitableview nsmutablearray ios
我有一个包含许多行的tableview,我希望能够删除这些行.填充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];
}
Run Code Online (Sandbox Code Playgroud)
从
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
subscribe *subscribeclass = [subscribe alloc];
[subscribeclass deleteFromArray: indexPath.row];
[myTableView reloadData];
}
}
Run Code Online (Sandbox Code Playgroud)
这在我第一次删除行时工作正常.但是当我删除秒行时,应用程序在deleteFromArray中的以下行崩溃:
[storedArray removeObjectAtIndex:number];
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
来自NSUserDefaults的数组是NSArray,而不是NSMutableArray.您应该将代码修改为:
- (void)deleteFromArray:(NSUInteger) number{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; //load NSUserDefaults
NSMutableArray *storedArray = [[prefs objectForKey:@"mydata"] mutableCopy];
[storedArray removeObjectAtIndex:number];
[prefs setObject:storedArray forKey:@"mydata"];
[storedArray release];
[prefs synchronize];
}
Run Code Online (Sandbox Code Playgroud)
这将创建不可变数组的副本并使其可变,以便您可以对其进行修改.
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |