我有一个包含三个实体的核心数据模型:事务、场合、人员,当我当前在事务实体中获取时,我得到“NULL”作为数据库中的值。让我解释。
就我而言,事务是与人员和场合有关系的实体。个人实体具有名称属性和与事务实体的关系。交易(个人实体)< ------ >> whoBy(交易实体)。
还有一个来自categories属性(场合实体)<---------------->>事件(Transaction Entity)的关系。
我处于这个应用程序的基本阶段。我有一个表视图控制器,当您按下加号按钮时,系统会在模式视图中要求您添加名称和场合。最终两者都将显示在表格视图中,名称是单元格的主要文本,场合是副标题。
当我将来自用户的插入值直接添加到代表名称属性的 Person 实体时,它起作用了,我在表视图中看到了这一点。场合也是如此(与人分开)。
但是,当我将数据直接添加到事务实体并使用 fetchRequest 来实现时,每次按保存传递值并返回表视图时,都会显示 (NULL)。
我的 AddEntryVC 在保存按钮方法中有这个:
NSManagedObject *newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:context];
[newEntry setValue:self.nameTextField.text forKeyPath:@"whoBy.name"];
在表格视图中,我有:
// 有一个叫做 transactions 的 NSMutableArray 属性来保存事务 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Transaction"]; self.transactions = [[managedObjectContext executeFetchRequest:fetchRequest error:nil]mutableCopy];
// 在 cellForRowAtIndexPath NSManagedObject *transaction = [self.transactions objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"%@", [transaction valueForKeyPath:@"whoBy.name"]]];
当我运行它时,没有错误/警告,当我添加一个条目时,我看到 (NULL) 作为保存的结果。当我运行相同的代码时,只需将 Transaction 直接修改为 Person,包括 MutableArray,它就可以工作。
所以我快到了..但非常感谢任何帮助。我觉得 whoBy.name 的关系不起作用。因为这是一种关系。我无法想象我必须去设置 Person.name 属性;它应该只适用于交易吗?
我还尝试了获取请求下方的谓词:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"whoBy.name = %@", self.personTransaction.name];
.. 其中 personTransaction 是 @property (nonatomic, strong) Person *personTransaction 属性并且具有相同的结果。
提前致谢