Xcode 6.4
Swift 1.2
我试图迭代用户联系人,并且对于每个有电子邮件的联系人,都会迭代电子邮件。 问题是,我将电子邮件转换为字符串时将其作为errorType,而不是将其作为String对象获取。
我的问题是,为什么会发生这种情况?
为什么EmailID不被识别为 String ?
这是我的代码:
let allContacts = ABAddressBookCopyArrayOfAllPeople(self.addressBookRef).takeRetainedValue() as Array
for record in allContacts
{
let currentContact: ABRecordRef = record;
let emailMultiValue:ABMultiValueRef = ABRecordCopyValue(currentContact, kABPersonEmailProperty).takeRetainedValue() as ABMultiValueRef
if ABMultiValueGetCount(emailMultiValue) > 0 {
let emailAddresses: NSArray = ABMultiValueCopyArrayOfAllValues(emailMultiValue).takeUnretainedValue() as NSArray
for email :AnyObject in emailAddresses {
if let emailID = email as? String{
//EmailID is <<errorType>>
println(emailID) //actually prints the email
}
}
}
}
编辑:
我尝试将emailAddressed替换为该行。
let emailAddresses: [String] = ABMultiValueCopyArrayOfAllValues(emailMultiValue).takeUnretainedValue() as! [String]
但是,我仍然得到同样的错误。
谢谢!
答案 0 :(得分:0)
好的,这是通过迭代索引而不是元素
来解决的for i in 0..<emailAddresses.count {
let email:String = emailAddresses[i]; //email is actually a string now
}
如果有人知道为什么迭代元素会产生错误类型,我真的很想知道