1

我在我的应用程序中构建了一个表单(https://github.com/xmartlabs/Eureka),其中一个输入将获得一个可选集类型。但是,我需要将此集合作为数组推送给每个用户的 Parse。但是 Parse 中的数组字段仅接受 NSArray 作为有效数据类型。如何将其转换为 NSArray?我已经参考了这篇文章(将本机 swift Set 转换为数组),但它似乎不适用于我的情况。这是我的代码:

let user = PFUser()

print(form.rowByTag("Subjects")?.baseValue)

if let subjects = form.rowByTag("Subjects")?.baseValue
{
    let arr = Array(arrayLiteral: subjects)
    user["Subjects"] = arr as! AnyObject
}
else
{
    print("There is no subjects chosen")
}

Subjects 字段是 Parse 中的一个数组字段。打印语句的结果和错误: 在此处输入图像描述

在此处输入图像描述

4

1 回答 1

3

问题是数组中的对象是未包装的选项。

但是你不能使用Array(arrayLiteral: ),因为它只会创建一个包含集合本身的数组,而不是集合中元素的数组。

我们将使用它flatMap来安全地打开内容。

if let subjects = form.rowByTag("Subjects")?.baseValue as? Set<String> {
    let arr = subjects.flatMap { $0 }
    user["Subjects"] = arr as! AnyObject

}

当然,如果可能的话,最好解决问题的根源并在代码流的早期安全地解包选项,这样您就可以Array(subjects)像往常一样使用。

于 2016-02-20T13:18:24.087 回答