Syntax 使用NSDictionary的Swift可选链接
请帮忙重拍这个Syntax 使用NSDictionary的Swift可选链接,syntax,swift,xcode6,optional-values,Syntax,Swift,Xcode6,Optional Values,请帮忙重拍这个 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 let stored_value: String? = parent_obj
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
let stored_value: String? = parent_obj?.getFieldForCode(code)?["value"] as? NSString
并得到一个错误:
Type 'String' does not conform to protocol 'NSCopying'
这是我的函数头:
func getFieldForCode(code: String) -> NSDictionary?
可能吗?我这样问是因为每当我使用NSArray和NSDictionary时,我的代码看起来很糟糕:
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 {
有什么建议吗?您不能将其直接转换为
字符串
,因为您正在从NSDictionary
中提取它,并且正如错误所说,字符串
不符合NSCopying
。但是,String
被桥接到NSString
,并且NSString
不符合NSCopying
。因此,通过一点施法/桥接技巧,您可以使其工作如下:
let stored_value = parent_obj?.getFieldForCode(code)?["value"] as? String
let stored_value: String? = parent_obj?.getFieldForCode(code)?["value"] as? NSString
注意:如果在可选绑定中使用此选项(看起来像是您想要的),请不要忘记从存储值的类型声明中删除?
:
我相信您只需要一些参数:let stored_value=(parent_obj?.getFieldForCode(code))?[“value”]as?字符串
否,我与parens有相同的错误。。。