符合 Objective-C 中的可识别性

Conforming to Identifiable in Objective-C

我想让现有的 Objective-C 类 符合 Identifiable 协议,以便我可以将它们用作 SwiftUI 中的列表项。

@interface MyClass: NSObject // What to do?
@end

出于某种原因,谷歌搜索根本没有帮助。可能吗? 如果没有,是否有一个不需要我继续创建包装器的好选择 类?

class MyClassWrapper: Identifiable {
    let id = UUID()
    var myClass: MyClass
}

您可以使用 extension 来符合 Swift 中的 Identifiable -- 然后只需指定哪个 属性 应该用作 id

//obj-c
@interface MyClass : NSObject
@property (strong,nonatomic) NSString* myIdProperty;
@end
//Swift
extension MyClass : Identifiable {
    public var id: String {
        myIdProperty
    }
}

我在这里使用了 NSString/String,但您可以使用 NSUUID/UUID 或任何其他符合 Hashableid 类型。