如何将 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 类型,如 Tuple
或 Struct
在 Objective-C 中没有等价物,它们不能被转换为或引用为 AnyObject
,NSArray
和 NSMutableArray
将它们的元素类型限制为。
如果您必须 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)
我有 swift 个元组数组 [(String, String)]
并且想将此数组转换为 NSMutableArray。我已经试过了,但没有用:
let myNSMUtableArray = swiftArrayOfTuples as! AnyObject as! NSMutableArray
您尝试执行的操作存在两个问题:
- Swift数组可以转换为
NSArray
,但如果不构造副本 则不能转换为 - Swift 元组没有 Cocoa 对应项,因此您不能将它们或包含它们的 Swift 集合转换为 Cocoa 类型。
NSMutableArray
以下是从 String
个对象的 Swift 数组构造 NSMutableArray
的方法:
var arr = ["a"]
arr.append("b")
let mutable = (arr as AnyObject as! NSArray).mutableCopy()
mutable.addObject("c")
print(mutable)
由于 swift 类型,如 Tuple
或 Struct
在 Objective-C 中没有等价物,它们不能被转换为或引用为 AnyObject
,NSArray
和 NSMutableArray
将它们的元素类型限制为。
如果您必须 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)