我正在尝试将使用Core Data的项目从Objective-C转换为Swift。
数据模型的结构使得我拥有一个包含其他文件夹的主文件夹-这些文件夹也可以通过“ parentFolder”关系包含其他文件夹。
当前,我在Objective-C中执行此操作以检索主文件夹(它找到唯一一个没有“ parentFolder”的文件夹,并且按预期工作):
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:"Folder"]; request.predicate = [NSPredicate predicateWithFormat:@"parentFolder == %@", nil];
在转换为Swift时,我想做同样的事情:
let request = NSFetchRequest(entityName: "Folder") request.predicate = NSPredicate(format: "parentFolder == %@", nil)
…但是编译器抱怨调用中缺少“参数标签’argumentArray:”。(我似乎把它弄糊涂了,以为我需要使用NSPredicate(format:argumentsArray :)方法来代替…)
在Swift中有正确的方法吗?
看起来(使用当前的Xcode 6 beta 3版本)通常很难传递nil可变参数列表。
nil
这 似乎 可行:
let predicate = NSPredicate(format: "parentFolder == %@", 0) print(predicate) // Output: parentFolder == nil
但是 最简单的解决方案 是将谓词写为
NSPredicate(format: "parentFolder == nil")