An *_*Hoa 1 interop objective-c swift
我想让现有的 Objective-C 类符合Identifiable协议,以便我可以将它们用作SwiftUI.
@interface MyClass: NSObject // What to do?
@end
Run Code Online (Sandbox Code Playgroud)
由于某种原因,谷歌搜索根本没有帮助。是否可以?如果没有,是否有一个好的替代方案,不需要我继续创建包装类?
class MyClassWrapper: Identifiable {
let id = UUID()
var myClass: MyClass
}
Run Code Online (Sandbox Code Playgroud)
您可以在 Swift 中使用extension来符合Identifiable——然后只需指定哪个属性应该用作id:
//obj-c
@interface MyClass : NSObject
@property (strong,nonatomic) NSString* myIdProperty;
@end
Run Code Online (Sandbox Code Playgroud)
//Swift
extension MyClass : Identifiable {
public var id: String {
myIdProperty
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里使用NSString/String,但您可以使用NSUUID/UUID或任何其他Hashable符合标准的id类型。