2017-02-02 55 views
0

我正在更新我的代碼到swift3.0,但得到含糊不清的成員?我可能會做什麼錯。這裏是我在收到錯誤的方法。獲取對成員下標的歧義引用

open class func parseJsonTenantList(_ list: [NSDictionary]?, strElementName: String, attrName1: String, attrNameValue2: String) -> [TenantRegister] 
{ 
    var renantList: [TenantRegister] = [] 
    var key: String? 
    if let dict : [NSDictionary] = list { 
     var value: String? 
     for i in 0..<dict.count { 
      /// if attribute name doesn't match then it returns nil 
      if let s1: AnyObject = dict[i].value(forKey: attrName1) 
      { 
       key = s1 as? String 
      } 
      if let s2: AnyObject = dict[i].value(forKey: attrNameValue2) 
      { 
       value = s2 as? String 
      } 
      if (!(String.stringIsNilOrEmpty(value) && String.stringIsNilOrEmpty(key))) 
      { 
       let t: TenantRegister = TenantRegister() 
       t.name = key 
       t.tenantId = Guid(value!) 
       renantList.append(t) 
      } 
     } 
    } 



    return renantList 
} 
+0

在這條線上得到錯誤:if let s1:AnyObject = dict [i] .value(forKey:attrName1) –

+0

你問題解決了嗎? –

+0

不,還是不知道該怎麼辦 –

回答

1

問題是您正在使用NSDictionary,來解決你的問題簡單的列表轉換爲斯威夫特的原生型[[String:Any]]然後使用標有它,而不是value(forKey:)

if let dict = list as? [[String:Any]] { 
    var value: String? 
    for i in 0..<dict.count { 
     /// if attribute name doesn't match then it returns nil 
     if let s1 = dict[i][attrName1] as? String 
     { 
      key = s1 
     } 
     if let s2 = dict[i][attrNameValue2] as? String 
     { 
      value = s2 
     } 
     if (!(String.stringIsNilOrEmpty(value) && String.stringIsNilOrEmpty(key))) 
     { 
      let t: TenantRegister = TenantRegister() 
      t.name = key 
      t.tenantId = Guid(value!) 
      renantList.append(t) 
     } 
    } 
} 

在斯威夫特使用原生型詞典[:]和Array []代替NSDictionaryNSArray克服這種類型的問題。

相關問題