【发布时间】:2023-03-07 15:15:01
【问题描述】:
Int32 的谓词不起作用。
我在核心数据中有一个实体,它为它的一个属性保存 Int32(见下文)。
我已经通过 fetch 验证了 Core Data 中存储了数据:
我想扫描核心数据实体并检查条目,使用 Int32 的 Predicate:
extension serialPortIO {
// ************************************************
// MARK: - Core Data - Search for Object using uuid
// ************************************************
func entityExists(moc: NSManagedObjectContext, ioKitDevice: UInt32) -> Bool {
var result: Bool = false
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "SerialPortENT")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "ioKitDevice", ascending: true)]
//fetchRequest.predicate = NSPredicate(format: "ioKitDevice = %i", Int32(ioKitDevice))
do {let fetchResults = try moc.fetch(fetchRequest) as! [SerialPortENT]
if fetchResults.count == 0 { result = false } else { result = true }
} catch {
messageClass().aLog(message: "[\(ioKitDevice) :: Record search error]", .Error)
}
return result
}
每当我运行时,结果总是错误的。
【问题讨论】:
-
试试
fetchRequest.predicate = NSPredicate(format: "ioKitDevice = %@", NSNumber(value: ioKitDevice) -
嗨,这也可以:fetchRequest.predicate = NSPredicate(format: "ioKitDevice = %i", ioKitDevice)
标签: macos core-data swift4 nspredicate