• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 核心数据更新 : changes not saved

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:50:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试在我的 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

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

- (void)prepareForSegueUIStoryboardSegue *)segue senderid)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)saveid)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];



Best Answer-推荐答案


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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap