Swift地址簿,迭代电子邮件获取errorType

时间:2015-08-10 13:03:30

标签: ios xcode swift

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

            }

        }
    }

}

enter image description here

编辑:
我尝试将emailAddressed替换为该行。

let emailAddresses: [String] = ABMultiValueCopyArrayOfAllValues(emailMultiValue).takeUnretainedValue() as! [String]

但是,我仍然得到同样的错误。

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,这是通过迭代索引而不是元素

来解决的
for i in 0..<emailAddresses.count {
    let email:String = emailAddresses[i]; //email is actually a string now
}

如果有人知道为什么迭代元素会产生错误类型,我真的很想知道