gpt4 book ai didi

ios - 你如何覆盖只读属性以在子类中读写

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:53 25 4
gpt4 key购买 nike

我想覆盖只读属性并使其可读/可写。

super 类。这是在一个框架中,所以我不能用 Swift 重写它。

@interface AWSAbstractCognitoIdentityProvider : AWSAbstractIdentityProvider
@property (nonatomic, strong, readonly) NSString *providerName;
// (...)
@end

我导入上面的框架时,XCode7的界面预览是这样的:

public class AWSAbstractCognitoIdentityProvider : AWSAbstractIdentityProvider {
public var providerName: String! { get }
// (...)
}

现在,子类定义。这个类是在应用程序中定义的,所以我试图用 Swift 重写它。

// .h file
@interface AppIdentityProvider : AWSAbstractCognitoIdentityProvider
@end

// .m file
@interface AppIdentityProvider ()
@property (strong, atomic) NSString *providerName; // <=== THIS: Redeclare by removing readonly
@end

@implementation AppIdentityProvider
@synthesize providerName=_providerName; // <=== and this

// ...
@end

如何对上面的属性进行转码?

我尝试了以下方法:

public class AppIdentityProviderSwift: AWSAbstractCognitoIdentityProvider
{

public override var providerName: String! {
get { return super.providerName }
set { super.providerName = newValue } // <== compile error, the property is read only
}
// (...)
}

谢谢。

最佳答案

您可以为您的类添加一个支持变量。如果您不需要调用父类(super class)的 setter,那应该没问题。

class AppIdentityProviderSwift : AWSAbstractCognitoIdentityProvider {
private final var _providerName : String!
override var providerName: String! {
get {
return _providerName
}
set {
_providerName = newValue
}
}
}

关于ios - 你如何覆盖只读属性以在子类中读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com