2016-05-10 9 views
-2

私はSwiftを使ってコレクションのタイプを決定しようとしています。それが私の目標です。新しい言語ではサポートされていないようですので、Objective-Cに戻ってみました。コレクションジェネリックスは新機能であり、私はSwiftの相互運用性のために追加されたものだと考えています。スイフトアレイタイプを決定する

アレイタイプがdであるかどうかを確認できる機能はありますか?

class SuperClass : NSObject { } 

class SubClass: SuperClass { } 

let a = SubClass() 

if a.isKindOfClass(SuperClass) { 
// this works as expected like objective-c 
    print("yes") 
} 

let b = Array<SubClass>() 
if b.isKindOfClass(Array<SuperClass>) { 
// error: value type of 'Array<SubClass>' has no member isKindOfClass 
    print("yes") 
} 

if b is Array<SuperClass> { 
// error: 'SuperClass' is not a subtype of 'SubClass' 
    print("yes") 
} 
+0

を試してみてください[タイプキャスト:タイプのチェック](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html) – crashmstr

+0

あなた自身の質問に答えたので、何が問題なのですか? – matt

答えて

0

あなたは、単にArray<String>() is Array<String>でそれをテストすることができますが、あなたはd.dynamicType

を見ることができます任意の変数を持っているタイプ知りたい場合は@crashmstrは(bが配列リテラルであるあなたのケースでは

0

権利であります値型)であり、参照型ではありません。したがって、isKindOfClassに電話することはできません。

0

することは、私はまだ迅速学んでいるが、 `bはアレイ `作品であるのでしょうか?この

if let array = b as? Array<SuperClass> 
{ 
    //perform some action 
} 
関連する問題