クラス名からクラスをインスタンス化する必要があります。私はこれをSwift 3でうまく動作させましたが、Swift 4に変換した後、もう動作させることはできません。私は"MyApp.MyClass"
と"_TtC5MyApp7MyClass"
の両方でNSClassFromString(_:)
を使用しようとしましたが、成功しませんでした。そして、私もBundle.main.classNamed(_:)
機能を使ってみました。私は@objc(MyBaseClass)
を追加して、クラス宣言の上にMyClass
を追加してObjective-Cに公開しました。 MyClass
はMyBaseClass
に由来します。Swift 4でNSClassFromStringが動作しない
なぜこれが機能していないのか分かりません。お手数ですが。前もって感謝します!
[mcve]を表示してください。 – Hamish
"クラス名からクラスをインスタンス化する必要があります。"これは悪臭です。ユースケースを表示できますか?おそらくもっと良い方法があります。 – matt
私のアプリはplistからいくつかの他の情報と共にidプロパティを持ついくつかのレストランを読み込みます。営業時間。このIDは、Restaurantクラスから派生した同じ名前のクラスを参照します。これらのクラスのそれぞれは、現在のランチを取得するためにいくつかのWebスクレイピングを行います。すべての重い作業を行うWebサービスを作成する方がいいかもしれないが、今のところこのソリューションを使いたいと思う。さもなければ、私はおそらくVPSを支払う必要があります。 –