Swift 3:无法通过反射设置可选的Bool

时间:2016-10-19 15:19:22

标签: swift reflection swift3

我在操场上有以下代码:

class Result :NSObject {
    var success :Bool? = false
    var message :String? = ""
}

var result = Result()
print(result.message)
var value :Bool? = true
result.setValue(value, forKey: "success")
result.setValue("hello", forKey: "message")
print(result.message)

此代码在第一个result.setValue行上失败,并显示消息"此类与密钥成功不符合密钥值编码。"如果我使属性成功非可选,那么此代码工作正常。无论是否可选,属性消息都可以正常工作。

这里发生了什么?有什么方法吗?

1 个答案:

答案 0 :(得分:1)

Swift没有反映。您正在使用Objective-C反射。 Objective-C不支持可选的值类型(BOOLInt等。