Dar*_*der 5 frameworks cross-platform objective-c swift
我structs在.swift文件中用swift编写了几个简单的文件。这些structs非常简单,几乎只包含字符串:
struct Letter {
   struct A {
      static let aSome : String = "descASome"
      static let aSomeMore : String = "descASomeMore"
   }
   struct B {
      static let bNow : String = "descBNow"
      static let bLater : String = "descBLater"
   }
...
}
我想在包含Objective-C代码的项目中使用这些结构,因为我正在编写一个跨平台框架。
我读过:ObjectiveC-Apple的Swift互操作性,明确指出ObjectiveC不能使用Swift编写的结构。除其他功能外,不包括:
Swift中定义的结构
解决方案1:
我找到了一个SO解决方案,可以通过使用类来解决此问题:
@objc class Letter : NSObject {
   @objc class A : NSObject {
      static let aSome : String = "descASome"
      static let aSomeMore : String = "descASomeMore"
   }
   @objc class B : NSObject {
      static let bNow : String = "descBNow"
      static let bLater : String = "descBLater"
   }
...
}
此解决方案有效,但是我必须将所有结构重写为类。它们也不像结构那样轻巧(除其他外)。此外,我觉得我会倒退解决问题。
Q1。除了解决方案1之外,还有什么其他方法可以在ObjectiveC内使用Swift结构,而该解决方案不太适合我的项目/情况?(如果原始值是Int,则可以使用枚举)
Q2。有没有一种方法可以将#define SomeConst用于ObjectiveC访问,将stucst用于Swift访问,例如:
#if macOS // if Swift?
#endif
截至目前,没有。您将需要类来存储模型对象。
@objcMembers public class Car: NSObject {
    public var mileage: NSNumber?
}
@objcMember实际上将它们转换为 Objective-C 可读格式,并且可以从 Objective-C 类访问。这将使您的代码具有互操作性。
注意:确保类类型为NSObject。
| 归档时间: | 
 | 
| 查看次数: | 5699 次 | 
| 最近记录: |