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