2016-04-13 9 views
4

私はタプル[(String, String)]の素早い配列を持ち、この配列をNSMutableArrayにキャストしたいと思います。私はこれを試してみました、それが動作していない:タプルの素早い配列をNSMutableArrayにキャストする方法は?

let myNSMUtableArray = swiftArrayOfTuples as! AnyObject as! NSMutableArray 
+1

あなたがすることはできません。

あなたはタプルの迅速な配列からNSMutableArrayのを返さなければならない場合は次善の策

は、2つの要素の配列の配列を返すことがあります。 2D配列 '[[String]]'のタプルを変更し、 '[AnyObject]'として保存してください –

答えて

7

AnyObjectNSArrayおよびNSMutableArrayは、その要素タイプをに制限します。

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

あなたがやろうとしているものには二つの問題があります。

  • スウィフト配列がNSArrayにキャストすることができますが、それはNSMutableArrayにキャストすることはできませんが、
  • スウィフトタプルにはココアの対応がないため、それらを含むスウィフトコレクションをココアタイプにキャストすることはできません。ここで

あなたがStringオブジェクトのスウィフト配列からNSMutableArrayを構築する方法である:TupleまたはStructのような迅速なタイプは、彼らがにキャストまたはとして参照することができないのObjective-Cには同等を持っていないので

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