如何将一组快速元组转换为NSMutableArray?

时间:2016-04-13 23:46:00

标签: arrays swift casting nsmutablearray

我有快速的元组[(String, String)]数组,并希望将此数组转换为NSMutableArray。我试过这个并没有用:

let myNSMUtableArray = swiftArrayOfTuples as! AnyObject as! NSMutableArray

2 个答案:

答案 0 :(得分:11)

由于TupleStruct等快速类型在Objective-C中没有等效,因此无法将其转换为AnyObject NSArrayNSMutableArray将其元素类型约束为。

如果必须从快速的元组数组中返回NSMutableArray,那么下一个最好的事情可能是返回一个包含2个元素数组的数组:

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

答案 1 :(得分:2)

您要做的事情有两个问题:

  • 可以将Swift数组强制转换为NSArray,但如果不构建副本则无法强制转换为NSMutableArray
  • Swift元组没有Cocoa副本,所以你不能将它们或包含它们的Swift集合强制转换为Cocoa类型。

以下是如何从NSMutableArray个对象的Swift数组构造String

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