如何从Swift扩展访问Objective-C类的私有成员?

迈克·李施克

我正在尝试在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;
}

目标C:

@interface ShortDate : NSObject<NSCopying, NSCoding> {
    NSDate           *inner;
    NSDateComponents *components; // The date split into components.
}

...

@end

我得到的错误:

ShortDate.swift:26:9:'ShortDate'没有名为'components'的成员

newacct

我相信无法从Swift访问Objective-C实例变量。只有Objective-C属性映射到Swift属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++-访问基类的受保护/私有成员

访问派生类C ++的私有成员

无法从C ++中的类内部访问私有成员?

C ++ | 派生类正在访问基类的私有成员,而不是其自己的私有成员

C ++:访问该类的私有成员

使公共成员变量访问C ++中同一类的私有成员

为什么 C++ 模板类可以访问其基类的私有成员?

C ++类模板函数可以访问嵌套类的私有成员

无法使用派生类访问类的私有成员的 C++ 代码

如何启用朋友类的朋友功能直接在C ++中访问其私有成员

C ++如何在std :: for_each内部的类中访问私有成员

错误C2248:无法访问在类中声明的私有成员

类对象不能访问其自己的私有成员?

std:hash 可以访问类的私有成员

不使用友元类访问私有成员

子类访问父类中的私有成员变量

如何获得通用函数指针作为C ++类的私有成员?

在 C++ 中实现复制控制时如何处理基类的私有成员?

通过私有成员访问同一个类的私有成员变量

c ++模板模板:无法访问私有成员

如何修复Unreal和C ++中的“无法访问在类中声明的私有成员”错误

错误C2248:无法访问在类中声明的私有成员,编译器行为异常

错误C2248:“ CvSVM :: CvSVM”:无法访问在类“ CvSVM”中声明的私有成员

错误:C2248:'QVariant :: QVariant':无法访问在类'QVariant'中声明的私有成员

错误C2248:“ klientPracownik :: klientPracownik”:无法访问在类“ klientPracownik”中声明的私有成员

Swift中的朋友类(访问内部类的私有成员)

如果C ++头文件包含私有成员变量声明,如何将其视为类的“接口”?

C ++访问私有类成员

PowerMock访问私有成员