我有一个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
答案 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