If else 语句定义一个 NSPredicate
If else statement to define an NSPredicate
我正在尝试定义一个基于段控制器开关的谓词。
if self.streamtype == "case1" {
let predicatearray = defaults.object(forKey: "case1") as! [String]
let predicate = NSPredicate(format: "UserID IN %@" , predicatearray)
} else if self.streamtype == "case2" {
let predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)
} else {
let predicatearray = defaults.object(forKey: "case3") as! [String]
let predicate = NSPredicate(format: "UserID IN %@", predicatearray)
}
let publicData = CKContainer.default().publicCloudDatabase
let query = CKQuery(recordType: "Post", predicate: predicate)
我收到一条错误消息:
"Cannot be sent to an abstract object of class NSPredicate: Create a concrete instance!"
此外,它告诉我从未使用过谓词变量的初始化。我已经尝试用几种不同的方式编写函数,但这对我来说最有意义,因为我只需要在加载新信息时更新谓词,所以我只是将两个函数合二为一。
您正在 if {}
或 else {}
范围内定义谓词,这就是它在范围外不可见的原因。
var predicate : NSPredicate!
if self.streamtype == "case1" {
let predicatearray = defaults.object(forKey: "case1") as! [String]
predicate = NSPredicate(format: "UserID IN %@", predicatearray)
} else if self.streamtype == "case2" {
predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)
} else {
let predicatearray = defaults.object(forKey: "case3") as! [String]
predicate = NSPredicate(format: "UserID IN %@", predicatearray)
}
let publicData = CKContainer.default().publicCloudDatabase
let query = CKQuery(recordType: "Post", predicate: predicate)
我正在尝试定义一个基于段控制器开关的谓词。
if self.streamtype == "case1" {
let predicatearray = defaults.object(forKey: "case1") as! [String]
let predicate = NSPredicate(format: "UserID IN %@" , predicatearray)
} else if self.streamtype == "case2" {
let predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)
} else {
let predicatearray = defaults.object(forKey: "case3") as! [String]
let predicate = NSPredicate(format: "UserID IN %@", predicatearray)
}
let publicData = CKContainer.default().publicCloudDatabase
let query = CKQuery(recordType: "Post", predicate: predicate)
我收到一条错误消息:
"Cannot be sent to an abstract object of class NSPredicate: Create a concrete instance!"
此外,它告诉我从未使用过谓词变量的初始化。我已经尝试用几种不同的方式编写函数,但这对我来说最有意义,因为我只需要在加载新信息时更新谓词,所以我只是将两个函数合二为一。
您正在 if {}
或 else {}
范围内定义谓词,这就是它在范围外不可见的原因。
var predicate : NSPredicate!
if self.streamtype == "case1" {
let predicatearray = defaults.object(forKey: "case1") as! [String]
predicate = NSPredicate(format: "UserID IN %@", predicatearray)
} else if self.streamtype == "case2" {
predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)
} else {
let predicatearray = defaults.object(forKey: "case3") as! [String]
predicate = NSPredicate(format: "UserID IN %@", predicatearray)
}
let publicData = CKContainer.default().publicCloudDatabase
let query = CKQuery(recordType: "Post", predicate: predicate)