iOS 核心数据更新 : changes not saved

标签 ios objective-c core-data ios7

我正在尝试在我的 iPad 应用程序中使用 Core Data。

我有一个像这样的模型:

客户.h

#import <CoreData/CoreData.h>
@interface Customer : NSManagedObject
@property (nonatomic,strong) NSString *name;
@end

客户.m

#import "Customer.h"
@implementation Customer
@synthesize name;
@end

TableView Controller 显示数据库中的所有客户。通过选择客户,将启动详细信息 View 推送序列并设置客户:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.

    CustomerDetailViewController *detailViewController = (CustomerDetailViewController*)   [segue destinationViewController];
    detailViewController.customer = [customers objectAtIndex:self.tableView.indexPathForSelectedRow.row];
}

在详细 View Controller 中,如果更改,操作保存应该保存客户:

- (IBAction)save:(id)sender 
{
  AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  NSManagedObjectContext *moc = [delegate managedObjectContext];
  self.customer.name = self.nameTextField.text;
  NSError *error;
  if (![moc save:&error]) 
  {
    NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
  }
}

尽管名称已更改,但更改不会保存:但不会出现错误(错误为零,日志未显示)...

此外:

  BOOL customerHasChanges = [self.customer hasChanges];
  BOOL mocHasChanges = [moc hasChanges];

都是假的!

但是插入新实体效果很好:

Customer *customer = [NSEntityDescription insertNewObjectForEntityForName:@"Customer" inManagedObjectContext:self.managedObjectContext];
[customer setValue:@"Mars Inc." forKey:@"name"];
NSError *error; 
[self.managedObjectContext save:&error];

最佳答案

您的实现文件中有错误。使用@dynamic而不是@synthesize

关于iOS 核心数据更新 : changes not saved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477604/

相关文章:

ios - 如何检查 NSMutableArray 中是否已经存在一个值?

ios - dispatch_get_main_queue 的奇怪行为

iphone - 如何通过 Safari URL 启动我的 iPhone 应用程序

ios - 如何为自定义结构编写类似于 CGRectZero 的宏

ios - 如何在uitextview或uiimage中点按突出显示特定句子

ios - 如何为 iOS 构建杂志应用程序

ios - 需要将一小段代码快速转换为 Objective C

ios - 在后台更新 NSManagedObject

ios - 一对多关系 : not able to save

swift - 使用 Core Data 存储大型字典数组