私は行を削除するオプションをユーザに提供するために、私のUITableView
次のような方法を追加しました:私はオプションUITableViewから行を追加した後に、どのように削除できますか?
使用してXCodeのテンプレートからこのメソッドをコピーした
(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
ユーザーは、彼が知らせ入るべき場所に新しい
UIView
が開かれUITableView
でaddButton
をプッシュするとストレージ
ためCoreData新しいエンティティのためのation。
次に、ユーザーはUIView
のsaveButton
に触れます。情報は読み出され、コンテキスト内に格納されます。 UIView
が閉じられ、ユーザーはUITableView
に戻ります。
新しいエントリが新しい行に表示されるようになりました。ユーザーが間違いを犯してすぐにこの行を削除したい場合(行を左から右に拭き取り、「削除」をタッチする)行が残り、それ以外は何も起こりません。次のエラーが表示されます。
An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:.
Invalid update: invalid number of rows in section 0.
The number of rows contained in an existing section after the update (1)
must be equal to the number of rows contained in that section before the update (1),
plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).
with userInfo (null)
ただし、削除を実行する前にアプリを終了すると、行が削除されます。 (再表示してから削除)
controllerDidChangecontent
[self.tableView endUpdate]
のみと呼ばれます。
私の方法は、次のようになります。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object for the given index path
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
//NSLog(@"DATE: %@", [[UIApplication sharedApplication] scheduledLocalNotifications]);
for (UILocalNotification *notification in [[UIApplication sharedApplication] scheduledLocalNotifications]) {
NSLog(@"N: %@", notification.fireDate);
NSLog(@"O: %@", [[self.fetchedResultsController objectAtIndexPath:indexPath] valueForKey:@"zeit"]);
if (notification.fireDate == [[self.fetchedResultsController objectAtIndexPath:indexPath] valueForKey:@"zeit"]) {
[[UIApplication sharedApplication] cancelLocalNotification:notification];
NSLog(@"GELÖSCHT!");
}
}
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
私は行が追加が、コミットされなかったと思います。そして、それは知らない行を削除しようとします。私はこれを正しく理解していますか? しかし、どこでエラーを修正するのか正確にはわかりません。 どうすればいいですか?誰か知っていますか?
私は、あなたが何を意味するかを教えてくれる言葉をいくつか追加しなければならないと思います。私はそれのいくつかを理解していない。 –
写真は常に役立ちます。おそらくそれはもっと明白だろう。 :) –
あなたは私が投稿するエラーを理解していますか? どのように私は問題をクリア...あなたが知りたいのですか? –