ios - 制作 nsarray 时出现 Swift 参数错误

标签 ios swift

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/

相关文章:

ios - 如何在 Swift 2/AVPlayer 中恢复背景音频?

ios - UITableView 中的自动滚动更顺畅

ios - 带有卡片卡片和列表的 UITableView - iOS Swift

c# - 将 InputStream 和 OutputStream 转换为 System.IO.Stream - Xamarin.iOS (MonoTouch)

php - 在 Swift2 中发送 php POST 请求需要很长时间

swift - viewDidDisappear 不显示广告

ios - UiTableview 没有出现在屏幕上

ios - type() 不符合协议(protocol)anyobject

ios - '-[页面比较:] unrecognized selector sent to instance' in CoreData

ios - 在 iOS 模拟器上记录和回放用户操作?