Tim*_*ent 7 key-value-coding nspredicate swift
当我使用Predicate过滤自定义Swift类的数组时,我得到错误:
***NSForwarding:警告:类'Plantivo1_6.Seed'的对象0x78ed21a0没有实现methodSignatureForSelector: - 提前故障
无法识别的选择器 - [Plantivo1_6.Seed valueForKey:]
如果我没记错的话,这可以在Objective-C中使用.我的错是什么?
let names = ["Tom","Mike","Marc"]
println(names)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", "om")
let array = (names as NSArray).filteredArrayUsingPredicate(searchPredicate)
println(array)
println()
let mySeed1 = Seed() // Seed is a class with a `culture` String property
let mySeed2 = Seed()
let mySeed3 = Seed()
mySeed1.culture = "Tom"
mySeed2.culture = "Mike"
mySeed3.culture = "Marc"
let mySeeds = [mySeed1,mySeed2,mySeed3]
println(mySeeds)
let searchPredicate1 = NSPredicate(format: "SELF.culture CONTAINS[c] %@", "om")
let array1 = (mySeeds as NSArray).filteredArrayUsingPredicate(searchPredicate1)
println(array1)
Run Code Online (Sandbox Code Playgroud)
jpe*_*erl 12
您的Seed类是否继承自NSObject?
如果没有,这就是您将获得的信息.
解:
class Seed: NSObject {
...
Run Code Online (Sandbox Code Playgroud)
编辑:
stklieme是正确的 - 要使用NSPredicate,您的对象的类需要-valueForKey
按照NSKeyValueCoding协议的定义来实现.您可以定义自己的实现-valueForKey
,也可以让您的类继承自NSObject,它会为您处理.
您可以将谓词与任何类对象一起使用,但该类必须支持要在谓词中使用的键的键值编码.
归档时间: |
|
查看次数: |
1370 次 |
最近记录: |