我必须在 Swift 中转换 Objective C 代码。 这是我的 objective-c 代码
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"FacilityId == %@ && Id != %@", facility[kColumnId], [[NSUserDefaults standardUserDefaults] valueForKey:kKeyUserId]];
return [[self coworkers] filteredArrayUsingPredicate:predicate].count;
我将它转换为 swift。这是我的快速代码。
let filteredCoworkers = self.coworkers.filter{
$0["FacilityId"] as? Int == facility[kColumnId] as? Int && $0["Id"] as? String != UserDefaults.standard.string(forKey: kKeyUserId)
}
return filteredCoworkers.count
但它不起作用,因为我得到了空的filteredCoworkers数组。它不应该为空。这意味着过滤器不起作用。
最佳答案
尝试使用以下代码:
var predicate = NSPredicate(format: "FacilityId == %@ && Id != %@", facility[kColumnId], (UserDefaults.standard.value(forKey: kKeyUserId) as? NSPredicate))
return self.coworkers.filter { predicate.evaluate(with: $0) }.count
关于swift - 在 Swift 3 中转换 Objective C 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44457998/