如何将原生 Swift 集转换为 NSArrays?

How to convert native Swift sets to NSArrays?

我建了一个表格(https://github.com/xmartlabs/Eureka) in my app and one of the input will obtain an Optional Set type. However,I need to push this set as an array to Parse for every user.But the array field in Parse only accepts NSArray as a valid data type.How do I convert it to an NSArray? I have already referred to this post () 但它似乎不适用于我的情况。 这是我的代码:

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 中的一个数组字段。 打印语句的结果和错误:

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

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

我们将使用 flatMap 来安全地解包内容。

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

}

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