セルを削除できるテーブル ビューを備えたビュー コントローラーがあります。ブックマークと呼ばれるものを処理する別のクラスがあり、そのクラスはBookmarkHandler
. ブックマークをアップロードしたり、ブックマーク配列全体を取得したり、ブックマークを削除したりできるメソッドがあります。ここでは、次のようなクラスがあります。
+ (NSMutableArray *)bookmarkCollection {
NSMutableArray *bookmarkCollection = [[NSUserDefaults standardUserDefaults] objectForKey: @"bookmarks"];
if (!bookmarkCollection) {
bookmarkCollection = [[NSMutableArray alloc] init];
}
return bookmarkCollection;
}
+ (void)deleteBookmark: (NSIndexPath *)indexPath {
NSMutableArray *bookmarkCollection = [[NSUserDefaults standardUserDefaults] objectForKey: @"bookmarks"];
[bookmarkCollection removeObjectAtIndex: indexPath.row];
[[NSUserDefaults standardUserDefaults] setObject:bookmarkCollection forKey: @"bookmarks"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+ (void)uploadBookmark:(NSDictionary *)singleBookmark {
NSMutableArray *bookmarkCollection = [[NSUserDefaults standardUserDefaults] objectForKey: @"bookmarks"];
if (!bookmarkCollection) {
bookmarkCollection = [[NSMutableArray alloc] init];
}
NSMutableDictionary *bookmark1 = [[NSMutableDictionary alloc] initWithDictionary: singleBookmark];
NSMutableDictionary *bookmark2 = [[NSMutableDictionary alloc] initWithDictionary: singleBookmark];
NSNumber *number1 = [[NSNumber alloc] initWithInt: 1];
NSNumber *number2 = [[NSNumber alloc] initWithInt: 2];
[bookmark1 setObject:number1 forKey: @"bookmarkTag"];
[bookmark2 setObject:number2 forKey: @"bookmarkTag"];
[bookmarkCollection addObject: bookmark1];
[bookmarkCollection addObject: bookmark2];
[[NSUserDefaults standardUserDefaults] setObject:bookmarkCollection forKey: @"bookmarks"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
変更可能な配列であるブックマーク コレクションには、名前と日付のオブジェクト/キーを持つ辞書が入力されます。これらの名前と日付は、他のビュー コントローラーのテーブル ビュー セル タイトルに入力されます。テーブル ビュー内のセルの数は、[[BookmarkHandler bookmarkCollection] count];
他のビュー コントローラーでは、テーブル ビュー セルを削除できるので、デリゲート メソッドを実装します。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[BookmarkHandler deleteBookmark: indexPath];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}
}
したがって、セルを削除するときは、 をBookmarkHandler
呼び出してブックマークを削除deleteBookmark:
し、テーブル ビューから行を削除します。ただし、この行でクラッシュすることがあります。
[bookmarkCollection removeObjectAtIndex: indexPath.row];
しかし、クラッシュ ログはなく、All Exceptions ブレークポイントを追加しました。
私が間違っていることはありますか?手伝ってくれてありがとう...