2017-07-21 6 views
0

これらのコードは同等ですか?Objective-CとSwift ArrayとNOT演算子の比較

オブジェクティブC:

if !someArray { 
     // do something 
    } 

スウィフト:

if someArray.isEmpty { 
     // do something 
    } 
+0

を ' ) 'が、それはあなたが何をしたいか/チェックしたいかによって異なります。 – Larme

+0

これは役に立ちます!ありがとう! –

+0

ちなみに、nil配列の場合、 '[someArray count]'は0を返します。しかし、非nil配列は0カウントを持つこともできますし、言語自体はnil配列と空を区別するよう強く強制しませんアレイ。 Swiftでは空の配列とnil配列を区別する必要があります。 – zneak

答えて

2

これらは異なっています。

Objective-Cコードは、配列が存在するかどうかをチェックします。つまり、配列がnilであるかどうかをチェックします。

Swiftコードは、配列が空であるかどうかをチェックします。

スウィフトアレイがnilではありません、あなたはこの使用できることを確認するために:(0 == [カウントsomeArray]場合(!someArrayが) `Objective-Cで`と異なる場合

if someArray != nil { 
    print("The array is not nil") 
} 
+0

Swiftには簡略版がありますか?または、私はそれを前に無制限でないことを確認するために、素早くアレイをアンラップする必要がありますか? –

+0

あなたの質問に答えるために自分のコードを更新しました。 –

+0

私は「「Any型」の非オプション値をnilに比較すると常にtrueを返す」という警告が出ます。 –

0

someArrayのように定義されると仮定すると:

NSArray *someArray = @[@1, @2, @3]; 

ポインタがほとんどであり、ゼロではないこと、次いでif !someArray {チェックポインターがでないことを普遍的にチェックする。配列の数を保証するものではありません。