0

UITextFieldを使用するときに追加した新しい行を保存するためにCoreDataを取得する際に問題が発生します。これが私のテーブルビューにオブジェクトを挿入するための私の方法です。[追加]ボタンをクリックすると、テキストフィールドが追加され、すぐに編集モードになります。次に、ユーザーがキーボードで[完了]をクリックすると、テキストフィールドで編集が終了し、テキストフィールドでエントリがコアデータに保存されます。

編集:メソッドtextFieldDidEndEditing内のへの呼び出しを削除しましたinsertNewObject:(id)sender。アプリがクラッシュしていました

 - (void)insertNewObject:(id)sender {

NSManagedObjectContext *context = [self.fetchedResultsController     managedObjectContext]; 

TehdaItem *item = [NSEntityDescription insertNewObjectForEntityForName:@"TehdaItem" inManagedObjectContext:context];


// If appropriate, configure the new managed object.
// Normally you should use accessor methods, but using KVC here avoids the need to add a custom class to the template.


// Putting the cell in edit mode
TehdaTableViewCell *editcell;
for (TehdaTableViewCell *cell in [self.tableView visibleCells]) {
    if (cell.itemLabel.text == item.itemTitle) {

        editcell = cell;

        break;
    }
}



[editcell.itemLabel becomeFirstResponder];

// The cell needs to call the method textfield did end editing so that it can save the new object into the store

// 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();
}

}

これが私のtextFieldDidEndEditingメソッドです:

- (void)textFieldDidEndEditing:(UITextField *)textField {
TehdaTableViewCell *cell = (TehdaTableViewCell *) textField.superview.superview;
TehdaItem *item = [self.fetchedResultsController objectAtIndexPath:[self.tableView indexPathForCell:cell]];

//TehdaTableViewCell *cell;
item.itemTitle = cell.itemLabel.text;

}

ここからどこへ行くのかよくわかりません。どんな助けでもいただければ幸いです。

ありがとう。

4

1 に答える 1

0

使用できます

NSError *error;
[item.managedObjectContext save:&error];
if (error) {
// Triage the problem and respond appropriately
}

- (void)textFieldDidEndEditing:(UITextField *)textFieldメソッドで。しかし、もし私があなたなら、オブジェクトを保存する前にいくつかの検証を行います。

于 2013-03-03T23:50:23.123 に答える