如何将 swift 元组数组转换为 NSMutableArray?

How to cast a swift array of tuples to NSMutableArray?

我有 swift 个元组数组 [(String, String)] 并且想将此数组转换为 NSMutableArray。我已经试过了,但没有用:

let myNSMUtableArray = swiftArrayOfTuples as! AnyObject as! NSMutableArray

您尝试执行的操作存在两个问题:

  • Swift数组可以转换为NSArray,但如果不构造副本
  • 则不能转换为NSMutableArray
  • Swift 元组没有 Cocoa 对应项,因此您不能将它们或包含它们的 Swift 集合转换为 Cocoa 类型。

以下是从 String 个对象的 Swift 数组构造 NSMutableArray 的方法:

var arr = ["a"]
arr.append("b")
let mutable = (arr as AnyObject as! NSArray).mutableCopy()
mutable.addObject("c")
print(mutable)

由于 swift 类型,如 TupleStruct 在 Objective-C 中没有等价物,它们不能被转换为或引用为 AnyObjectNSArrayNSMutableArray 将它们的元素类型限制为。

如果您必须 return 来自 swift 元组数组的 NSMutableArray,那么下一个最好的事情可能是 returning 2 元素数组的数组:

let itemsTuple = [("Pheonix Down", "Potion"), ("Elixer", "Turbo Ether")]
let itemsArray = itemsTuple.map { [[=10=].0, [=10=].1] }
let mutableItems = NSMutableArray(array: itemsArray)