NSPredicate 无法在 Swift (CoreData) 上工作
NSPredicate not working on Swift (CoreData)
我有一个具有 1 个属性 (Int) 的实体以及与另一个实体的关系。我创建了一个具有属性和关系的对象并将其添加到数据库中。如果我获取实体中的所有对象,我可以看到这个已经创建,但我不能使用 NSPredicate 与对应的属性和关系。
fetchRequest.predicate = NSPredicate(format: "(int_attribute == %@) AND (relation_entity like %@)", int_value, relation_object)
let list = (try? context.fetch(fetchRequest)) ?? []
执行此操作后,列表为空。如果我将 NSPredicate 与 int_attribute 一起使用,也会发生同样的情况。
上下文是对来自 ObservableObject 的 class DataController 的引用,其中我有一个 NSPersistentContainer 和带有 loadPersistentStores 的 init() 函数。
在谓词中,%@
需要一个对象。它不是一般的“替换这个”指示符,不同的数据类型有不同的说明符。如果您要匹配原始类型,则需要其他东西。对于整数,请尝试 %d
。对于其他内容,请查找 printf
-style format specifiers.
我有一个具有 1 个属性 (Int) 的实体以及与另一个实体的关系。我创建了一个具有属性和关系的对象并将其添加到数据库中。如果我获取实体中的所有对象,我可以看到这个已经创建,但我不能使用 NSPredicate 与对应的属性和关系。
fetchRequest.predicate = NSPredicate(format: "(int_attribute == %@) AND (relation_entity like %@)", int_value, relation_object)
let list = (try? context.fetch(fetchRequest)) ?? []
执行此操作后,列表为空。如果我将 NSPredicate 与 int_attribute 一起使用,也会发生同样的情况。 上下文是对来自 ObservableObject 的 class DataController 的引用,其中我有一个 NSPersistentContainer 和带有 loadPersistentStores 的 init() 函数。
在谓词中,%@
需要一个对象。它不是一般的“替换这个”指示符,不同的数据类型有不同的说明符。如果您要匹配原始类型,则需要其他东西。对于整数,请尝试 %d
。对于其他内容,请查找 printf
-style format specifiers.