当前位置: 首页 > 面试题库 >

我可以在Swift中使用带有nil参数的NSPredicate吗?

宗波涛
2023-03-14
问题内容

我正在尝试将使用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可变参数列表。

似乎 可行:

let predicate = NSPredicate(format: "parentFolder == %@", 0)
print(predicate)
// Output: parentFolder == nil

但是 最简单的解决方案 是将谓词写为

NSPredicate(format: "parentFolder == nil")


 类似资料:
  • 问题内容: Swift中的函数是否可以具有参数?我正在尝试这样做: …但是当我尝试调用它并通过时,它给了我一个奇怪的编译错误: 我不明白为什么我的类已经被声明为可选的,所以必须遵循某些特殊的协议。 问题答案: 它不会编译,因为该函数需要引用,但是您通过了。这个问题与可选无关。 通过用声明参数意味着您将在函数体内为其分配一些值。如何分配价值? 你需要这样称呼它 如果您了解C ,则这是代码的C 版本,

  • 问题内容: 基本上,我想设置一个使用“ for”作为参数以提高可读性的函数。 我设置了类似的内容,但是当我尝试将开关用于“ for”时,它将作为关键字出现并引发编译错误。 干杯 问题答案: 使用关键字作为普通标识符时,您必须使用反引号`对此进行转义

  • 我是第一次用阿拉莫火。我使用的是最新版本的Alamofire 1.3.1。我想在一个API调用中发送一个图像,一个视频和一些POST参数。我正在使用多部分表单数据。多部分模块正在工作。我面临的问题是发送额外的POST参数。下面是我的代码。“params”是包含额外参数的字典?如何在请求中追加这些POST参数。请帮忙

  • 问题内容: 我正在尝试在Swift中上传带有参数的图像。当我尝试此代码时,我可以获取参数,但不能获取图像 编辑2: 我认为保存的UIImage的路径存在一些问题,因为php告诉我该文件已经存在,这是因为我将其发送为空白 问题答案: 在下面的评论中,您告知我们您正在使用语法来检索文件。这意味着您要创建一个请求。该过程基本上是: 为您的请求指定边界。 指定请求的一个,以指定该请求及其边界。 创建请求正

  • 我认为我对保存的UIIimage的路径有一些问题,因为php告诉我该文件已经存在,我认为这是因为我以空白方式发送它

  • 我正在使用Alamofire向服务器发送数据。我有一个图像,我想上传到服务器的数据形式与一些其他参数。在Alamofire中,我使用multipartFormData方法发布所有参数和图像。服务器需要数据为JSON格式,参数如下所示: 我正在努力,但它给了我一个失败的回应。以下是我在swift中与alamofire合作的代码: 我的服务器接受BLOB数据中的映像。如果有人能帮我。非常感谢。