私はさまざまなタイプのオブジェクトと配列の配列を持っています。オブジェクトごとに、配列の配列を繰り返し処理し、そのオブジェクトがその型かどうかを確認したいと思います。このようなもの:オブジェクトがSwiftのクラスメタタイプのインスタンスであることを確認します。
class Parent {}
class ChildA: Parent {}
class ChildB: Parent {}
class GrandChildA: ChildA {}
var objects: [Any] = ["foo", ChildA(), ChildA(), ChildB(), GrandChildA()]
var classes = [Parent, ChildA, ChildB] // This line doesn't compile!!
for obj in objects {
for cls in classes {
if obj is cls {
NSLog("obj matches type!")
}
}
}
クラスを配列に格納できないため、これは機能しません。私が理解として、あなた缶ストアクラス型などChildA.self
など:
ChildA().dynamicType == ChildA.self // true
しかし、これはサブクラスを処理しない:
ChildA() is Parent // true
:
ChildA().dynamicType == Parent.self // false
は明らかis
オペレータは、サブクラスのケースを解決します
is
を使用する場合は、クラスの型を配列に格納する方法がわかりません。
私は何とかSwiftといくつかのリフレクション・ブードゥーを使って何をしたいのですか?
申し訳ありませんが、タイトルが誤解を招く場合は、適切な質問をするには十分に理解できません。
はhttps://stackoverflow.com/を比較q/44874126/2976878 – Hamish
@ハミッシュ:あなたの答えは素晴らしいです!ここで答えとして提出すれば、私はそれを受け入れてうれしいです。 –
うれしいことがありましたら幸いです! 5月も同様のケースでは二重引用符で終わる – Hamish