0

この UITextField はプログラムで作成され、カスタム UITableViewCell に存在します。UITableViewCell は UITextField のデリゲートでもあり、<UITextFieldDelegate>プロトコルを実装します。アプリをリロードすると、テキストが CoreData 内に保存されないことを除いて、すべてが正常に機能しているようです。TableViewController をこのクラスのデリゲートにしようとしましたが、うまくいかないようで、実際には認識されないセレクターがインスタンス エラーに送信されてアプリがクラッシュします。

私のtextFieldDidEndEditingメソッドのコードは次のとおりです。

- (void)textFieldDidEndEditing:(UITextField *)textField {

    Parts *item ; // the NSManagedObject

    item.itemTitle = _itemLabel.text; //_itemLabel is a custom UITextField Class, and itemTitle is a string attribute of the NSManagedObject


    NSError *error;
    [item.managedObjectContext save:&error];
    if (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();
    }

}

これは、UITextField を作成するカスタムinitメソッドの一部です。

_itemLabel = [[TehdaLabel alloc] initWithFrame:CGRectNull];
    _itemLabel.textColor = [UIColor blackColor];
    _itemLabel.font = [UIFont fontWithName:@"Helvetica" size:12];
    _itemLabel.backgroundColor = [UIColor clearColor];
    _itemLabel.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    _itemLabel.returnKeyType = UIReturnKeyDone;
    _itemLabel.placeholder = @"Type some stuff here!";
    _itemLabel.delegate = self;
    [self addSubview:_itemLabel];

それ以外はすべて正常に機能し、テキストを CoreData に保存するだけでうまくいきません。

編集:insertObject私のTableViewController内のメソッド

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
Parts *item = [NSEntityDescription insertNewObjectForEntityForName:@"Parts" inManagedObjectContext:context];

    MCSwipeTableViewCell *editCell;
    for (MCSwipeTableViewCell *cell in [self.tableView visibleCells]){
        if (cell.itemLabel.text == item.itemTitle) {
        //if (cell.itemLabel.text == item.itemTitle) {
            editCell = cell;
            break;
        }
    }
    editCell.itemLabel.text = item.itemTitle;
    [editCell.itemLabel becomeFirstResponder];

    [item setValue:[NSDate date] forKey:@"itemDate"];

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

2 に答える 2

1

エンティティ「パーツ」をCoreDataに挿入していません。

Parts *item = [NSEntityDescription insertNewObjectForEntityForName:@"Parts"
                                              inManagedObjectContext:managedObjectContext];

そして今、それはそれを保存します...

于 2013-03-15T00:14:43.110 に答える
0

アイテムを初期化していません。nil オブジェクトです。

于 2013-03-15T00:10:56.693 に答える