2015-10-31 66 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"键具有空数组,例如?代码将崩溃。