gpt4 book ai didi

swift - NSObject 类用于以嵌套类方式设置值(Swift 4.0 - Xcode 9.1)

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:35 24 4
gpt4 key购买 nike

我创建了 NSObject 的子类并使用 NSObject 方法 setValuesForKeys() 自动设置我的类属性,它工作正常.但是现在我将这个子类中的嵌套类设置为再次设置值。这是我的代码。

class User: NSObject {
private let keys = ["id", "first_name", "last_name"]

@objc var id: String?
@objc var first_name: String?
@objc var last_name: String?

override init() {
super.init()
}

init(dic: [String: Any]) {
super.init()
self.setValuesForKeys(dic)
}
}

例如:

let user = User(dic: Dictionary)
user.first_name // Name of User

但是现在我想这样做..

class User: NSObject {
class Addr: NSObject {
private let keys = ["block", "zipcode", "country"]

@objc var block:String?
@objc var zipcode:String?
@objc var country:String?

override init() {
super.init()
}
}

private let keys = ["id", "first_name", "last_name", "addr"]

@objc var id:String?
@objc var first_name:String?
@objc var last_name:String?
@objc var addr:Addr?

override init() {
super.init()
}

init(dic: [String: Any]) {
super.init()
self.setValuesForKeys(dic)
}
}

现在我需要这样访问..

let user = User(dic: Dictionary)
user.addr.block // need to get block value

最佳答案

你可以用我的自定义AGObject

原因 @objcMembers 在 Swift 4 中使用

当 Swift 类引入许多需要 Objective-C 运行时行为的新方法或属性时,请在该类的声明中使用 @objcMembers 属性。将 @objcMembers 属性应用于类会隐式地将 @objc 属性添加到其所有 Objective-C 兼容成员。因为应用 @objc 属性会增加应用程序的编译大小并对性能产生不利影响,所以只有在每个成员都需要 @objc 应用了属性。

@objcMembers class User: NSObject {
...
}

关于swift - NSObject 类用于以嵌套类方式设置值(Swift 4.0 - Xcode 9.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908763/

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