符合 Objective-C 中的可识别性

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)

jn_*_*pdx 7

您可以在 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类型。