2017-01-01 6 views
2

対addingObjects方法の違い私は現在、iOSの開発のためにスウィフト3を学んでいると私は違いは以下の方法の間にあるものを知りたいと思った:スウィフト:appendメソッド

if let myItemArray = itemObject as? NSArray 
     { 
      myItemArray.addingObjects(from: [itemTextField.text!]) 
     } 

と、次の方法:

if let myItemArray = itemObject as? NSArray 
     { 
      myItemArray.append(itemTextField.text!) 
     } 
+1

NSArray'がappend' 'に応答しない'ので、第二のスニペットをコンパイルしない:スウィフトは同様の方法を有するもの

実際に、私はすでにブリッジの与えた例は、全く不要です。基本的にSwiftではNSArrayを使わないでください。 – vadian

+0

'addObject'は 'append'ではなくSwift' Array'クラスを使用しています – WMios

答えて

1
myItemArray.addingObjects(from: [itemTextField.text!]) // Using NSArray 

または

myItemArray.append(contentsOf: [itemTextField.text!]) // Using Swift Array class 

myItemArray.addObject(itemTextField.text!) //NSArray uses addObject not append 

又は

myItemArray.append(itemTextField.text!) //With base Swift Array class 

は単にオブジェクトを追加している間

は、アレイに配列の内容を追加することです。

最初のものは、配列をループしてaddObjectまたはappendを呼び出すのと同じです。例えば

、あなたは、配列をaddingObjects、またはループを呼び出し、addObjectまたはappendを呼び出すことができ[1, 2, 3]配列の内容を追加しようとしていた場合。

3

ここで理解しなければならないことが2つあります。

  • まず、スウィフトアレイは、は、Objective-CのNSArrayのに架橋されています。したがって、多くのCocoa Foundation NSArrayメソッドは、Arrayに属しているかのように魔法のように生き生きしています。そうでない場合は、NSArrayにSwift Arrayをキャストすることで、そうすることができます。例えば:

    let arr = ["Manny", "Moe", "Jack"] // Swift Array 
    let s = (arr as NSArray).componentsJoined(by:", ") // Cocoa Foundation method 
    // s is "Manny, Moe, Jack" 
    
  • 第二に、Objective-CのにNSArrayは、スイフトアレイとは異なり、不変あります。 addまたはaddObjects(from:)のように、NSMutableArrayが必要です(これはNSArrayのサブクラスです)。

NSArrayまたはNSMutableArrayを使用することを考えているときは、いつでも自分自身に質問してください。これは本当に必要ですか?多くの状況で、NSArrayまたはNSMutableArrayのFoundationメソッドを呼び出すことは全く必要ありません。 Swiftを使用しているため、可能な限りSwift Arrayを使用する必要があります。 varと宣言されている限り、appendappend(contentsOf:)のようなSwiftメソッドを持つSwift Arrayに追加することができます。できるだけそれらに固執する。

したがって、addまたはaddObjects(from:)などのNSMutableArrayメソッドは、あなたにとって興味がありません。

let arr = ["Manny", "Moe", "Jack"] // Swift Array 
let s = arr.joined(separator: ", ") // Swift method 
関連する問題