我想通過我的自定義對象做數比較使用BETWEEN。 我已經完成了字符串比較,但是數字比較發出錯誤,如下面的代碼所示。如何寫NSPredicate自定義對象(CGFloat的VAR)之間的合作
其中工程let predicate = NSPredicate(format: "SELF.name contains[c] %@","Sal")
class CustomClass: NSObject {
var name : String?
var aWidth : CGFloat!
}
字符串比較無論其
let predicate = NSPredicate(format: "SELF.aWidth > 0 AND SELF.aWidth < 50")
let predicate = NSPredicate(format: "SELF.aWidth < 50")
這一個完全以錯了,我知道了。
let predicate = NSPredicate(format: "SELF.aWidth BETWEEN {%@, %@}", {minWidth, maxWidth})
原因: '[< test.CustomClass 0x7fe86274bfd0> valueForUndefinedKey:]:這個類不是密鑰值編碼兼容的關鍵aWidth'
所有這個錯誤的搜索花了我的故事板問題。
如何使用BETWEEN編寫謂詞? 在此先感謝
UPDATE
我也發現有關在迅速濾波器是有幫助的這個例子。但我仍然有這個問題。
class Person : NSObject {
var age : CGFloat?
init(age: CGFloat) {
self.age = age
}
}
過濾
let eventAttendees = [Person(age: 22), Person(age: 41), Person(age: 23), Person(age: 30)]
let filteredAttendees = eventAttendees.filter({
$0.age < 30
})
for person in filteredAttendees {
print(person.age!)
}
當我嘗試使用相同的技術,我得到這個錯誤這個時候。
第一種方法
let array = self.testDictionary.allValues as Array
var filteredArray = array.filter({ (user: Person) -> Bool in
return $0.age < 30
})
匿名閉合參數不能有 明確的參數
第二種方法
let array = self.testDictionary.allValues as Array
var filteredArray = array.filter({ (user: Person) -> Bool in
return true
})
封閉的內部使用
無法將類型的價值 '(人)' - >布爾預期參數 型 '(Anyobject)' - >布爾
感謝
這是有幫助的,從來沒有使用過這種新快速篩選數組。方便快捷。 – selcuk