我有一個表視圖充滿了用戶定義的數據。該數組從nsuserdefaults收集並顯示在表視圖控制器中。我正在嘗試實現刪除功能。它看起來很好,但是當我按下刪除錯誤出現刪除元素從表視圖目標c
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
代碼中,我有Favourites.h
#import <UIKit/UIKit.h>
@interface FavoritesViewController: UITableViewController <UITableViewDelegate, UITableViewDataSource>
@property(nonatomic, strong) IBOutlet UITableView *tableView;
@property (nonatomic,strong) NSMutableArray *favoriteItems;
@end
然後一塊其中i初始化
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
favoriteItems= [[NSUserDefaults standardUserDefaults] objectForKey:@"favoritesArray"];
[self.tableView reloadData];
}
我覺得像上面的代碼是問題所在。 NSUserDefaults的;我期望是一個NSArray。那麼我怎麼改變它太可變?
只是爲了利益着想以下設置的刪除方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//remove the deleted object from your data source.
//If your data source is an NSMutableArray, do this
[self.favoriteItems removeObjectAtIndex:indexPath.row];
[[NSUserDefaults standardUserDefaults] setObject:favoriteItems forKey:@"favoritesArray"];
[self.tableView reloadData]; // tell table to refresh now
}
}
真的很感謝提前的幫助。