XCode 6.3.1、swift 1.2
NSArray arrayByAddingObjectsFromArray 的文档说:
func arrayByAddingObjectsFromArray(otherArray: [AnyObject]) -> [AnyObject]
编译器中的错误信息:
xxx.swift:127:40: '([AnyObject]) -> [AnyObject]' is not convertible to 'NSArray'
func selectRowsByUUID(selectedUUIDs: [AnyObject])
{
// use a set so we dont go all N**2
var selectedUUIDArr2: NSArray = NSArray.arrayByAddingObjectsFromArray(selectedUUIDs!)
...
func selectRowsByUUID(selectedUUIDs: [AnyObject]?)
{
var selectedUUIDArr: NSArray = NSArray.arrayByAddingObjectsFromArray(selectedUUIDs!)
...
此时我其实想做一个 NSSet,但是 NSArray 对大多数人来说更熟悉,所以我以它为例。
var selectedUUIDSet: NSSet = NSSet.setByAddingObjectsFromArray(selectedUUIDs)
如有任何帮助,我们将不胜感激。
最佳答案
您将 arrayByAddingObjectsFromArray()
作为类方法调用,但是
它是一个实例方法:它通过添加来自
一个数组到另一个数组。所以这会编译
let selectedUUIDArr = NSArray().arrayByAddingObjectsFromArray(selectedUUIDs)
并将selectedUUIDs
中的对象添加到返回的空数组中
通过 NSArray()
。但是同样可以更容易地实现
let selectedUUIDArr = selectedUUIDs as NSArray
setByAddingObjectsFromArray
也是一个实例方法,所以这个
会编译
let selectedUUIDSet = NSSet().setByAddingObjectsFromArray(selectedUUIDs)
但使用 NSSet(array:)
构造函数更容易:
let selectedUUIDSet = NSSet(array: selectedUUIDs)
你也可以考虑使用原生的 Swift Set
,
例如
func selectRowsByUUID(selectedUUIDs: [NSObject])
{
let selectedUUIDSet = Set(selectedUUIDs)
// ...
}
关于ios - 制作 nsarray 时出现 Swift 参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061260/