私はSwift(私が学んでいる)で次のように特定の値を保持するために使用するクラスを作成しました:
@objc public class Book: NSObject {
var title: String = ""
var date: Date = Date()
var sku: Float = 0
}
このクラスを、Objective-Cクラスからアクセスできるプロパティと同等のものに格納したいと思います。
クラスが次のように使用されるViewControllerで変数を作成してみました。
var lastBookViewed = Book()
ただし、次のコードを使用してオブジェクトをプロパティに保存しようとすると、エラーが発生します。
//create instance of book
let myBook = Book()
//gather information about book
lastBookViewed = myBook //THROWS COMPILER ERROR 'Use of Unresolved Identifier lastBookViewed
これを行う方法はありますか?
簡単であれば、Objective-Cファイルのプロパティにオブジェクトを保存することもできますが、これまでのところ、Swiftで作成されたBookクラスをObjective-Cファイルで認識できませんでした。推奨。
編集
次の構文を使用して、同じSwiftファイルの別のSwiftクラス(View Controllerクラス)にカスタムSwiftオブジェクトを格納するためのプロパティまたは変数を作成しようとすると、次のようになります。
var lastBookViewed: Book
コンパイラは、VCクラスに「yourVCにはイニシャライザがありません」という警告を出します。
プロジェクトの一般設定に移動します。アプリの適切なターゲットを選択します。「ビルド設定」に移動し、デフォルトの「基本」ではなく「すべて」に切り替えます。ここで「パッケージング」セクションを検索します。「いいえ」を「はい」に変更して、「モジュールの定義」をオンにします。
これをオンにすると、objective-cファイル内でswiftクラスを使用できるようになります。
「ビルド設定」を終了する前に、「パッケージング」セクションで「製品モジュール名」を探してください。これは重要ですので、必ず「製品モジュール名」をメモして正確にコピーしてください。
次に、Swiftクラスにアクセスできるようにしたいobjective-cクラスに移動します。このクラスの実装または.mファイルで、次のようなヘッダーをインポートします。
#import "MyProjectModuleName-Swift.h"
ここで、インポートのファイル名は、ビルド設定からの正確なプロジェクトモジュール名である必要があります。swiftクラスにアクセスするobjective-cファイルには、このインポートを含める必要があります。
public
@objc public class myClass
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加