gpt4 book ai didi

swift - 使用 Swift 中对象的自定义 setter 方法设置依赖属性变量

转载 作者:搜寻专家 更新时间:2023-11-01 07:20:41 26 4
gpt4 key购买 nike

我有一个名为 object 的类对象属性,以及一个名为 isEmpty 的 bool 只读变量。如果对象属性设置为某个对象,则 isEmpty 属性切换为 false,如果对象设置为 nil,则 isEmpty 设置为 true。我可以使用 Objective-C 实现这一点,如下所示:

@interface SomeObject: NSObject

@property (nonatomic, strong) id object;
@property (nonatomic, assign, readonly) BOOL isEmpty;

@end

@implementation SomeObject

- (void)object:(id)object {
_isEmpty = NO;
_object = object;
}

- (id)object {
return _object;
}

- (void)clearObject {
_object = nil;
_isEmpty = YES;
}

@end

我如何在 Swift 2.2 中模仿它?到目前为止我已经尝试过了

class SomeObject: NSObject {
public private(set) var isEmpty: Bool
var nodeObject: AnyObject? = {
get {
isEmpty = false
return object
}
set(_object: AnyObject) {
object = _object
}
}
}

但正如预期的那样,它不起作用!我知道这是错误的,但不确定是哪一部分!

TIA

最佳答案

除非你绝对需要设置 isEmpty,否则我会这样做:为 isEmpty 创建一个 getter,并检查 getter 中的 nodeObject 是否为 null:

class SomeObject {
var isEmpty: Bool {
get {
return nodeObject == nil
}
}
var nodeObject: AnyObject?
}

参见 fiddle :http://swiftlang.ng.bluemix.net/#/repl/57c73513458cfba6715ebebd

编辑:如果你真的想让它接近 Objective-C,我建议这个版本:

class SomeObject {
private var _isEmpty: Bool = true
var isEmpty: Bool {
get {
return _isEmpty
}
}
var nodeObject: AnyObject? {
didSet {
_isEmpty = nodeObject == nil
}
}
}

fiddle :https://swiftlang.ng.bluemix.net/#/repl/57c738b646a02c0452203f98

关于swift - 使用 Swift 中对象的自定义 setter 方法设置依赖属性变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39257619/

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