我在 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 没有初始化程序”
转到项目的常规设置。为您的应用选择合适的目标。转到“Build Settings”并切换到“All”,而不是默认的“Basic”。在这里搜索“包装”部分。打开“定义模块”,将“否”更改为“是”。
当它打开时,我们现在将能够在objective-c 文件中使用swift 类。
在离开“构建设置”之前,在“包装”部分中查找“产品模块名称”。这很重要,因此请务必记下并准确复制“产品模块名称”。
接下来转到一个 Objective-c 类,您希望能够在其中访问您的 swift 类。在该类的实现或 .m 文件中,导入这样的标头:
#import "MyProjectModuleName-Swift.h"
这里导入的文件名必须是构建设置中的确切项目模块名称。您想要访问 swift 类的任何 Objective-c 文件都应包含此导入。
public
@objc public class myClass
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句