Macos NSPredicate未在CoreData中返回Int32
Int32的谓词不工作 我在核心数据中有一个单独的实体,它为它的一个属性保存Int32(见下文) 我已通过提取验证了核心数据中存储有数据: 我想扫描核心数据实体并使用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 // ******************
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
打印(获取错误)
}
返回错误
}
tryfetchRequest.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
}