符合 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
或任何其他符合 Hashable
的 id
类型。
我想让现有的 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
或任何其他符合 Hashable
的 id
类型。