2017-06-18 16 views
0

Swiftの新機能です。 Objective-CのNSMutableArrayinitWithArrayのSwift同等の機能はありますか?Swift4 initWithArray相当品

Iがobj-C

tempArray = [[NSMutableArray alloc] initWithArray:dataArray]; 

に次のコードを持っていると私はスウィフト

var tempArray = [[[String:String]]]() 
var dataArray: [[String: String]] 
tempArray.append(dataArray) 

問題に次のように使用しようとしていますtempArrayのカウントが1として付属しています(これは論理的に正しいと思われる)。私がしたいのは、辞書オブジェクトを保持する配列であるdataArrayをtempArrayに追加することだけです。可能であれば、ネイティブスイフトアレイを使いたい。

EDIT: としては、提案された変更を行った後、私は次のエラーを取得しています:あなたが探しているものを私が考える

Cannot convert value of type [[String:String]] to expected argument type[String:String] 

var tempArray = [[String:String]]() 

    var dataArray: [[String: String]] = 

     [["name": "John", "Address": "XYZ"], 
     ["name": "Doe", "Address": "ABC"]] 

tempArray.append(dataArray) 

答えて

1

append(contentsOf:)です。また、配列型ではなく辞書型(String:String)を使用しています。次のことを試してください:あなたのObjective-Cへ

var tempArray = [String]() 
let dataArray: [String] = ["An", "array", "of", "String"] // just an example 
tempArray.append(contentsOf: dataArray) 

クローサーすることはあるかもしれない:

let dataArray: [String] = ["An", "array", "of", "String"] 
var tempArray = [String](dataArray) 

あなたはXcodeでArrayドキュメントページ上(第2のinit方法の一つである)、これらの方法を見つけることができます。

補遺コメントを1として、あなただけのStringから[String:String]に要素タイプを変更、辞書の配列を持って、使用されるすべてのメソッドは、(要素の型に依存しない)一般的なものです。例では私も文字通りの試験データによって変更する必要があります。

var tempArray = [[String:String]]() 
let dataArray: [[String:String]] = [["a" : "A", "b" : "dict"], ["a" : "another", "b" : "dict"]] 
tempArray.append(contentsOf: dataArray) 

HTH

+0

私は私のdataArrayは、実際の辞書オブジェクトを保持する配列であるため、辞書の種類を使用する必要があります。どのように私はそれを使用して行くのですか? – user2511882

+0

その場合、 'String'をあなたの辞書の型に置き換える必要があります。' [String:String] 'でしょうか?もちろん、私のサンプルデータは間違っています!上記のコードの構造はまったく同じですが、メソッド( 'append'、' init')は汎用的であり、要素型の配列で動作します。 – CRD

+0

それを試してみたら、tempArray全体をdataArrayに追加することができません。 var tempArray = [[String:String]] [[String:String]]タイプの値を[String:String]に変換できません – user2511882