Xcode 6.4
Swift 1.2
Опитвам се да повторя контактите с потребители и завсеки контакт, който има имейли, повтаряйте имейлите. Проблемът е, че получавам имейла като errorType, когато го преобразувам в низ, вместо да го получавам като String обект.
Въпросът ми е, защо се случва това?
Защо EmailID не се разпознава като низ?
Това е моят код:
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
}
}
}
}
редактиране:
Опитах се да заменя имейл адреса с този ред.
let emailAddresses: [String] = ABMultiValueCopyArrayOfAllValues(emailMultiValue).takeUnretainedValue() as! [String]
Но все пак получавам същата грешка.
Благодаря!
Отговори:
0 за отговор № 1ОК, това се решава чрез итерация на индекси, а не на елементи
for i in 0..<emailAddresses.count {
let email:String = emailAddresses[i]; //email is actually a string now
}
ако някой знае така или иначе защо повтарящите се елементи създават тип грешка, аз наистина бих искал да знам