swift - 在 Swift 3 中转换 Objective C 谓词

标签 swift predicate

我必须在 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/

相关文章:

arrays - 点击 CollectionView Cell 按钮可播放特定阵列中的声音并从特定阵列中复制电影

cocoa - 为什么这个 NSPredicate 不起作用?

swift - 使用 PHAssetCollection.fetchAssetCollectionsWithType() 快速从特定相册中获取照片

swift - 将 NSPopupbutton 绑定(bind)到类数组

ios - 保存 UIFont?到 UserDefault Swift 3

ios - 谓词获取参数包含在特定 NSSet 中的对象

predicate - std::find_if 的这种用法有什么问题?

range - 将 Guava 范围转换为不同的类型

ios - 如何从 PFObject 获取字符串并将其显示到 tableView 单元格中?

ios - 使用 Swift 2.0 更新 Xcode 7 后出现一些错误?