gpt4 book ai didi

Swift:无法在 NSObject 的子类上设置描述

转载 作者:搜寻专家 更新时间:2023-11-01 06:40:13 27 4
gpt4 key购买 nike

我构建了一个看起来像这样的自定义类:

import UIKit

class Device: NSObject {

var id = String()
var name = String()
var type = String()
//var description = String() //Cannot override with a stored property 'description'

}

非常简单的类,我继承了 NSObject,所以我可以使用“setValue(value, forKey: keyName)”。但是,当我执行以下操作时:

device.setValue("My Description", forKey: "description")

我收到以下错误:

'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key description.'

总而言之,我无法覆盖 NSObject.description,但是当我尝试设置它时出现错误。有人遇到过这个吗?

最佳答案

查看定义description的地方。它在 NSObjectProtocol 中列为

public var description: String { get }

您只能获取 description 属性,不能设置

在 Objective-C 中,描述在大多数类中作为方法实现;它没有带下划线的存储空间。 swift 等价物是一个计算属性:

public override var description: String {
return "I'm an object"
}

tl;dr 使用计算属性而不是存储属性

class CustomObject : NSObject {
private var des: String
override var description: String {
get {
return des
}
set(newValue) {
des = newValue
}
}

init(string: String) {
des = string
}
}

关于Swift:无法在 NSObject 的子类上设置描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36435766/

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