请帮助重拍这个
if let field = parent_obj?.getFieldForCode(code) {
if let stored_value = field["value"] as? String {
单行中的可选链接语法。我试着这样做:
let stored_value = parent_obj?.getFieldForCode(code)?["value"] as? String
并收到错误:
Type 'String' does not conform to protocol 'NSCopying'
这是我的函数标题:
func getFieldForCode(code: String) -> NSDictionary?
有可能吗?我问它,因为任何时候我使用NSArrays和NSDictionaries我的代码看起来很糟糕:
if let code = self.row_info["code"] as? String {
if let value_field = self.row_info["value_field"] as? String {
if let field = parent_obj?.getFieldForCode(code) {
if let stored_value = field["value"] as? String {
if let fields = self.fields_set{
if let current_value = fields[indexPath.row][value_field] as? String {
有任何建议吗?
答案 0 :(得分:2)
您无法将其直接投放到String
,因为您是从NSDictionary
中提取的,并且如错误所述,String
不符合{{1} }}。但是,NSCopying
桥接到String
,NSString
符合NSString
。所以,通过一点点演员/桥接技巧,你可以让它像这样工作:
NSCopying
注意:如果您在可选的绑定中使用它(它看起来像您想要的那样),请不要忘记从{{let stored_value: String? = parent_obj?.getFieldForCode(code)?["value"] as? NSString
删除?
1}}的类型声明:
stored_value