符合 Objective-C 中的可识别性

问题描述 投票:0回答:1

我想让现有的 Objective-C 类符合

Identifiable
协议,以便我可以将它们用作
SwiftUI
中的列表项。

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

是否有一个不需要创建包装类(像这样)的好的替代方案?

class MyClassWrapper: Identifiable {
    let id = UUID()
    var myClass: MyClass
}
swift objective-c swiftui interop swiftui-list
1个回答
8
投票

您可以使用

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
或任何其他符合
Hashable
id
类型。

© www.soinside.com 2019 - 2024. All rights reserved.