Macos NSPredicate未在CoreData中返回Int32

Macos NSPredicate未在CoreData中返回Int32,macos,core-data,swift4,nspredicate,Macos,Core Data,Swift4,Nspredicate,Int32的谓词不工作 我在核心数据中有一个单独的实体,它为它的一个属性保存Int32(见下文) 我已通过提取验证了核心数据中存储有数据: 我想扫描核心数据实体并使用Int32的谓词检查条目: extension serialPortIO { // ************************************************ // MARK: - Core Data - Search for Object using uuid // ******************

Int32的谓词不工作

我在核心数据中有一个单独的实体,它为它的一个属性保存Int32(见下文)

我已通过提取验证了核心数据中存储有数据:

我想扫描核心数据实体并使用Int32的谓词检查条目:

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
}
扩展串行端口{ // ************************************************ //标记:-核心数据-使用uuid搜索对象 // ************************************************ func entityExists(moc:NSManagedObjectContext,ioKitDevice:UInt32)->Bool{ var结果:Bool=false let fetchRequest=NSFetchRequest(entityName:“SerialPortENT”) fetchRequest.sortDescriptors=[NSSortDescriptor(键:“ioKitDevice”,升序:true)] //fetchRequest.predicate=NSPredicate(格式:“iokitdevidence=%i”,Int32(iokitdevidence)) do{let fetchResults=尝试moc.fetch(fetchRequest)as![SerialPortENT] 如果fetchResults.count==0{result=false}否则{result=true} }抓住{ messageClass().aLog(消息:“[\(ioKitDevice)::记录搜索错误]”,.error) } 返回结果 }
无论何时运行,结果始终为假。

在CoreData(Swift 4)中使用Int32的NSPredicate工作代码。

这里是获取数据功能

func ISRecordThere(Entity :NSEntityDescription,ID:Int?) -> Bool
{
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>()
    fetchRequest.predicate = NSPredicate(format: "id == %i", ID!)

    // Configure Fetch Request
    fetchRequest.entity = Entity

    do{

        let Fetchedresult = try appDelegate.managedObjectContext.fetch(fetchRequest)

        if  Fetchedresult.count > 0
        {
            let result:NSManagedObject = Fetchedresult[0] as! NSManagedObject

            if result.value(forKey: "id") as? Int != ID
            {
                return false
            }
            else
            {
                return true
            }
        }
        else
        {
            return false
        }
    }
    catch
    {
        let fetchError = error as NSError
        print(fetchError)
    }
    return false
}
func ISRecordThere(实体:NSEntityDescription,ID:Int?->Bool
{
让fetchRequest=NSFetchRequest()
fetchRequest.predicate=NSPredicate(格式:“id==%i”,id!)
//配置提取请求
fetchRequest.entity=实体
做{
让Fetchedresult=尝试appDelegate.managedObjectContext.fetch(fetchRequest)
如果Fetchedresult.count>0
{
让结果:NSManagedObject=Fetchedresult[0]作为!NSManagedObject
如果result.value(forKey:“id”)为?Int!=id
{
返回错误
}
其他的
{
返回真值
}
}
其他的
{
返回错误
}
}
抓住
{
让fetchError=错误为NSError
打印(获取错误)
}
返回错误
}

try
fetchRequest.predicate=NSPredicate(格式:“iokitdevidence=%@”,NSNumber(值:iokitdevidence)
Hi,这也有效:fetchRequest.predicate=NSPredicate(格式:“iokitdevidence=%i”,iokitdevidence)
func ISRecordThere(Entity :NSEntityDescription,ID:Int?) -> Bool
{
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>()
    fetchRequest.predicate = NSPredicate(format: "id == %i", ID!)

    // Configure Fetch Request
    fetchRequest.entity = Entity

    do{

        let Fetchedresult = try appDelegate.managedObjectContext.fetch(fetchRequest)

        if  Fetchedresult.count > 0
        {
            let result:NSManagedObject = Fetchedresult[0] as! NSManagedObject

            if result.value(forKey: "id") as? Int != ID
            {
                return false
            }
            else
            {
                return true
            }
        }
        else
        {
            return false
        }
    }
    catch
    {
        let fetchError = error as NSError
        print(fetchError)
    }
    return false
}