2015-10-31 28 views
0

我收到一個作爲指向集合的指針發送的對象。 我可以直接作爲NSDictionary訪問字段。使用JSON對象索引到NSArray中

emails field作爲一個數組發送,我用圓括號收到它。目前我通過我認爲是迂迴的方法獲得emailaddress。 我怎樣才能最有效地到達電子郵件地址?

let allDoc = users.allDocuments[0] 
print("allDoc: \(allDoc)") 

let emailsArray = users.allDocuments[0].valueForKey("emails") as! NSArray 
print("emailsArray: \(emailsArray)") 

let emailAddress = emailsArray[0]["address"] as! String 
print("emailAddress: \(emailAddress)") 

控制檯輸出:

allDoc: <METDocument key: <collection: users, ID: kzzw3vcqukD62xEyz>, fields: { 
    emails =  (
       { 
      address = "[email protected]"; 
      verified = 1; 
     } 
    ); 
    profile =  { 
     address =   { 
      city = ""; 
      country = nor; 
      lineOne = ""; 
      lineTwo = ""; 
      zip = ""; 
     }; 
     card =   { 
      last4 = 4242; 
      verified = 1; 
     }; 
     filledOut = 1; 
     name =   { 
      first = XXXX; 
      last = XXXX; 
     }; 
     phone = 9999999999; 
     validated = 1; 
    }; 
}> 
emailsArray: (
     { 
     address = "[email protected]"; 
     verified = 1; 
    } 
) 
emailAddress: [email protected] 
+0

用打印'users.allDocuments [0]'的結果更新你的問題。 – rmaddy

+0

@rmaddy我已更新 – KML

+0

它是一個Meteor-iOS對象 – KML

回答

1

如果你只是想你可以簡單地做的電子郵件地址:

let emailsAddress = users.allDocuments[0]["emails"][0][@"address"] as! String 
print("emailAddress: \(emailAddress)") 

但它確實是最好使用多條線路。它使代碼更容易閱讀和調試。另外,把所有這些放在一行上不允許任何錯誤檢查。例如,如果@"emails"鍵具有空數組,例如?代碼將崩潰。