0
我正在尝试获得一项法案的总价格,该法案中有许多与coredata有关的项目。我正在努力理解检索项目所需的谓词语法,以便我可以访问它们的价格。我不断收到以下错误:匹配一对多关系的谓词coredata
2016-12-14 14:13:12.309 Splitter[43533:5597917] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (ANY items IN <Splitter.Bill: 0x7fe6e0cebbd0> (entity: Bill; id: 0xd000000000300000 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Bill/p12> ; data: {
date = "December 14, 2016";
id = "6D672183-44C2-4961-ABB6-27FD657E5C68";
items = (
"0xd000000001fc0012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p127>",
"0xd0000000020c0012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p131>",
"0xd000000002080012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p130>",
"0xd000000002100012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p132>",
"0xd000000002040012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p129>",
"0xd000000001f00012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p124>",
"0xd000000001f80012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p126>",
"0xd000000001e80012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p122>",
"0xd000000001f40012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p125>",
"0xd000000001ec0012 <x-coredata://D13BAFFD-A78A-4C49-9992-F975887B7AB7/Item/p123>",
"(...and 1 more...)"
);
location = hgfhgfd;
name = hgfhgfd;
total = 0;
}))'
从下面的代码:
func setBillTotal() {
let managedContext = billObject.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Item")
let predicate = NSPredicate(format: "ANY items IN %@", billObject)
fetchRequest.predicate = predicate
var items = [Item]()
do {
let results =
try managedContext!.executeFetchRequest(fetchRequest)
items = results as! [Item]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
var sum = Int(0.0)
for item in items {
sum += Int(item.price)
}
billObject.setValue(sum, forKey: "total")
do {
try managedContext!.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
任何帮助将是巨大的,我确定它的一个简单修复,但在语法在某处我的头上。由于
您的物品中是否有参考物品bill_Id?或者是与Item-> Bill相反的关系?您是否还尝试过直接从bill对象访问“items”对象,而不是使用谓词使用另一个获取请求? – Tushar
嗨,物品有UUID但没有帐单ID。但是物品与账单有着反向关系。我将在问题中添加关系图像。我不能通过调用'bill.items'来访问项目,如果这就是你要求的,bill是一个NSManagedObject。 – Wazza