我想在Swift中扩展一个Objective-C类,并使其符合Equatable
协议。这需要访问扩展类中的一些私有成员,但编译器不允许我这样做。正确的方法是什么,而不使私有成员公开?
我的Swift代码:
import Foundation
extension ShortDate : Equatable { }
public func == (lhs: ShortDate, rhs: ShortDate) -> Bool {
if (lhs.components.year == rhs.components.year)
&& (lhs.components.month == rhs.components.month)
&& (lhs.components.day == rhs.components.day) {
return true;
}
return false;
}
Objective-C:
@interface ShortDate : NSObject<NSCopying, NSCoding> {
NSDate *inner;
NSDateComponents *components; // The date split into components.
}
...
@end
我收到的错误信息:
ShortDate.swift:26:9:“ShortDate”没有名为“components”的成员
提示:这是一个与“ShortDate”类中缺少“components”成员相关的错误。
YourAppName-Bridging-Header.h
中添加了正确的头文件? - Maxim Shoustin