二元运算符不能应用于 NSpredicate 和 int

Binary operator cannot be applied to NSpredicate and int

我有一个 EventDec 实体,它具有 eventStatus 属性,我只想显示该属性的结果。这是我的代码

 let fetchRequestDec = NSFetchRequest<NSFetchRequestResult>(entityName: "EventDec")
    fetchRequestDec.predicate = NSPredicate(format:"eventStatus = %i")
    let result = fetchRequestDec.predicate
 if (result == 1)
    {
      print("Status = 1")
    }
    else 
    {
      print("Status = 2")
    }

所以我过滤错误,因为我收到了这个错误。我该如何解决?

Binary operator '==' cannot be applied to NSpredicate and int

好吧,很高兴我在操场上检查了这个,因为 Apple 在 Swift 3.0 中做了很多子字符串更改。试试这个,打印谓词的 Int 值(您也可以通过稍微更改代码来访问该值):

let index = fetchRequestDec.predicate.predicateFormat.index(fetchRequestDec.predicate.predicateFormat.endIndex, offsetBy: -1)
print("Status: \(Int(String(fetchRequestDec.predicate.predicateFormat[index]))!)")

您为什么要尝试使用谓词?您的问题似乎想要 return EventDec 对象并打印 eventStatus 属性。您需要执行提取。获取结果数组。提取你想要的。无需过滤。

let fetchRequest: NSFetchRequest<EventDec> = EventDec.fetchRequest()
if let results = try? context.fetch(fetchRequest) {
   for result in results {
     print("Status = \(result.eventStatus)")
   }
}

这假定您的 managedObjectContext 称为上下文。 另外你有一个错字 eventStaus a 而不是 eventStatus