삭제할 수있는 행이있는 테이블 뷰가 있습니다. 테이블 뷰를 채우는 데이터는 NSMutableArray에 저장됩니다. 한 행의 데이터를 삭제하려면 내가 전화 :NSMutableArray removeObjectAtIndex가 두 번째 실행시 충돌합니다.
- (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];
어떤 아이디어가 있습니까?
무엇 충돌 말한다 않습니다 개체를 변경할 경우에도, 그것은
불변 그래서 그 대신
이시도의로 저장됩니다? – Peres
'- [__ NSCFArray removeObjectAtIndex :] : 변하기 쉬운 메소드가 불변 객체' – PonySlays
에 전송되었습니다. 'storedArray'가 NSArray이므로 분명히 그 메소드를 호출 할 수 없습니다. – Peres