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

时间:2017-03-05 05:47:12

标签: swift xcode core-data nsfetchrequest

我有一个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")
    }

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

  

二元运算符&#39; ==&#39;不能应用于NSpredicate和int

2 个答案:

答案 0 :(得分:1)

好吧,很高兴我在操场上检查过这个,因为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]))!)")

答案 1 :(得分:1)

为什么要尝试使用谓词?您的问题似乎想要返回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