Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 我可以在Swift中使用带零参数的NSPredicate吗?_Core Data_Swift_Nspredicate - Fatal编程技术网

Core data 我可以在Swift中使用带零参数的NSPredicate吗?

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

我正在尝试将一个使用核心数据的项目从Objective-C转换为Swift

数据模型的结构使我有一个主文件夹,其中包含其他文件夹-这些文件夹也可以包含其他文件夹,通过“parentFolder”关系

目前,我在Objective-C中这样做是为了检索主文件夹(它会找到唯一没有“parentFolder”的文件夹,并按预期工作):

在转换成Swift的过程中,我想做同样的事情:

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())