Core data 我可以在Swift中使用带零参数的NSPredicate吗?
我正在尝试将一个使用核心数据的项目从Objective-C转换为Swift 数据模型的结构使我有一个主文件夹,其中包含其他文件夹-这些文件夹也可以包含其他文件夹,通过“parentFolder”关系 目前,我在Objective-C中这样做是为了检索主文件夹(它会找到唯一没有“parentFolder”的文件夹,并按预期工作): 在转换成Swift的过程中,我想做同样的事情:Core data 我可以在Swift中使用带零参数的NSPredicate吗?,core-data,swift,nspredicate,Core Data,Swift,Nspredicate,我正在尝试将一个使用核心数据的项目从Objective-C转换为Swift 数据模型的结构使我有一个主文件夹,其中包含其他文件夹-这些文件夹也可以包含其他文件夹,通过“parentFolder”关系 目前,我在Objective-C中这样做是为了检索主文件夹(它会找到唯一没有“parentFolder”的文件夹,并按预期工作): 在转换成Swift的过程中,我想做同样的事情: let request = NSFetchRequest(entityName: "Folder") request.p
let request = NSFetchRequest(entityName: "Folder")
request.predicate = NSPredicate(format: "parentFolder == %@", nil)
。。。但是编译器在调用中抱怨“缺少参数标签'argumentArray:”(我似乎把它弄糊涂了,认为我需要使用NSPredicate(format:argumentArray:)方法来代替…)
在Swift中有没有正确的方法可以做到这一点?看起来(在当前的Xcode 6 beta 3版本中)通常很难做到这一点
在变量参数列表中传递nil
这似乎有效:
但是最简单的解决方案是将谓词简单地写为
NSPredicate(format: "parentFolder == nil")
最简单的解决方案和适合您的情况是将谓词简单地写为:
NSPredicate(format: "parentFolder == nil")
但是如果有必要插入nil作为参数,您可以使用NSNull。如果您使用的是可选的
let folderName: String? = nil
// ... assign folderName if available
NSPredicate(format: "parentFolder == %@", folderName ?? NSNull())
这将导致所有文件夹都具有相同的父级,如果父级为nil,它将获取所有没有父级的文件夹
NSPredicate(format: "parentFolder == nil")
let folderName: String? = nil
// ... assign folderName if available
NSPredicate(format: "parentFolder == %@", folderName ?? NSNull())