代码之家  ›  专栏  ›  技术社区  ›  user1904273

存储自定义对象(Swift中的类)以供Objective-C方法访问

  •  -1
  • user1904273  · 技术社区  · 6 年前

    我在Swift(我正在学习)中创建了一个类,我用它来保存某些值,如下所示:

    @objc public class Book: NSObject {
        var title: String = ""
        var date: Date = Date()
        var sku: Float = 0
    }
    

    我尝试在视图控制器中创建一个变量,该类的使用方式如下:

    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没有初始值设定项”

    1 回复  |  直到 6 年前
        1
  •  1
  •   excitedmicrobe    6 年前

    转到项目常规设置。为你的应用程序选择合适的目标。转到buildsettings并切换到All,而不是Basic,Basic是默认设置。在这里搜索包装部分。通过将“否”更改为“是”,启用“定义模块”。

    Screen 1

    当这个被打开时,我们现在可以在里面使用swift类了

    #导入“MyProjectModuleName Swift.h”

    在这里,导入的文件名必须与生成设置中的项目模块名完全相同。任何想要访问swift类的objective-c文件都应该包含这个导入。

    1. 现在值得一提的是使用swift类时可能出现的一个潜在问题。Objective-c不能读取顶级swift类。因此,如果直接使用swift类中的方法或变量,它将无法被识别。这个问题有一个简单的解决办法。让你的课 public
     @objc public class myClass