作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在我的应用程序中构建了一个表单 ( https://github.com/xmartlabs/Eureka ),其中一个输入将获得一个 Optional Set 类型。但是,我需要将这个集合作为数组推送给每个用户进行解析。但是解析中的数组字段只接受 NSArray 作为有效数据类型。如何将其转换为 NSArray?我已经提到这篇文章 ( Convert native swift Set into array )但它似乎不适用于我的情况。这是我的代码:
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")
}
最佳答案
问题是数组中的对象是未包装的可选对象。
但是您不能使用 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)
像往常一样。
关于arrays - 如何将原生 Swift 集转换为 NSArrays?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523073/
我是一名优秀的程序员,十分优秀!