[英]Store a custom object (class in Swift) for access by an Objective-C method
我在 Swift 中創建了一個類(我正在學習),用於保存某些值,如下所示:
@objc public class Book: NSObject {
var title: String = ""
var date: Date = Date()
var sku: Float = 0
}
我現在想將這個類存儲在一個可以被我的 Objective-C 類訪問的屬性中。
我嘗試在視圖控制器中創建一個變量,其中使用該類,如下所示:
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 文件中的屬性也可以工作,但到目前為止我還沒有能夠讓 Objective-C 文件識別在 Swift 中創建的 Book 類,盡管我將 @objc 放在它之前受到推崇的。
編輯
當我嘗試使用以下語法在同一個 Swift 文件中的不同 Swift 類(視圖控制器類)中創建用於存儲自定義 swift 對象的屬性或變量時:
var lastBookViewed: Book
編譯器為 VC 類發出警告“yourVC has no initializers”
轉到項目的常規設置。 為您的應用選擇合適的目標。 轉到“Build Settings”並切換到“All”,而不是默認的“Basic”。 在這里搜索“包裝”部分。 打開“定義模塊”,將“否”更改為“是”。
當它打開時,我們現在將能夠在objective-c 文件中使用swift 類。
在離開“構建設置”之前,在“包裝”部分中查找“產品模塊名稱”。 這很重要,因此請務必記下並准確復制“產品模塊名稱”。
接下來轉到一個 Objective-c 類,您希望能夠在其中訪問您的 swift 類。 在該類的實現或 .m 文件中,導入這樣的標頭:
#import "MyProjectModuleName-Swift.h"
這里導入的文件名必須是構建設置中的確切項目模塊名稱。 您想要訪問 swift 類的任何 Objective-c 文件都應包含此導入。
public
@objc public class myClass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.