2017-02-02 2 views
0

코드를 swift3.0으로 업데이트하지만 회원에게 모호한 참조를 받고 있습니까? 내가 뭘 잘못했는지. 저는 여기에서 오류가 발생하고있는 방법이다.회원 subscript에 모호한 참조 받기

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 s1 : AnyObject = dict [i] .value (forKey : attrName1) –

+0

해결 되었습니까? –

+0

아니요, 아직 무엇을 해야할지 전혀 모르겠 음 –

답변

1

문제는 문제는 단순히 스위프트의 기본 유형 [[String:Any]]에 목록을 캐스팅 한 후 value(forKey:)

대신 그것으로 첨자를 사용하여 해결에 당신이 NSDictionary을 사용하는 것입니다
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) 
     } 
    } 
} 

신속한 사용 네이티브 형식 사전 [:] 및 배열 [] 대신 NSDictionaryNSArray이 문제를 해결할 수 있습니다.