如何获取存储在 Swift 中的 NSMutableArray 中的 NSDictionary 元素?
How to fetch elements of NSDictionary stored in an NSMutableArray in Swift?
我通过这种方法将我的联系人存储为可变数组中的字典:
var addressBookReff: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
var arrOfDictContacts:NSMutableArray = NSMutableArray()
let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookReff).takeRetainedValue()
for person in people{
if let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String {
let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String {
arrOfDictContacts.addObject(["\(name)":"\(number)"])
}
}
}
这里,arrOfDictContacts
是我的可变数组,它包含名称和数字作为字典。像这样:
arrOfDictContacts = ({ my = 12131;}, { doctor = 54445;}, { AL = 543212601;}, { customer = 121; } }
现在我有了另一个名字数组
arrOfNames = [my, AL]
我想从arrOfDictContacts
得到arrOfNames
各自的数字
预期输出:
arrOfNumbers = [12131, 543212601]
我该怎么做?
编辑:
由于您的数组包含字典,因此方法是根据您的数组检查每个字典。喜欢以下内容:
var arrOfNumbers : [String] = []
for dict in arrOfDictContacts {
for name in arrOfNames {
if let value = dict[name] as? String {
arrOfNumbers.append(value)
}
}
}
我通过这种方法将我的联系人存储为可变数组中的字典:
var addressBookReff: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
var arrOfDictContacts:NSMutableArray = NSMutableArray()
let people:NSArray = ABAddressBookCopyArrayOfAllPeople(addressBookReff).takeRetainedValue()
for person in people{
if let name:String = ABRecordCopyValue(person, kABPersonFirstNameProperty)?.takeRetainedValue() as? String {
let numbers:ABMultiValue = ABRecordCopyValue(person, kABPersonPhoneProperty).takeRetainedValue()
if let number:String = ABMultiValueCopyValueAtIndex(numbers,0)?.takeRetainedValue() as? String {
arrOfDictContacts.addObject(["\(name)":"\(number)"])
}
}
}
这里,arrOfDictContacts
是我的可变数组,它包含名称和数字作为字典。像这样:
arrOfDictContacts = ({ my = 12131;}, { doctor = 54445;}, { AL = 543212601;}, { customer = 121; } }
现在我有了另一个名字数组
arrOfNames = [my, AL]
我想从arrOfDictContacts
arrOfNames
各自的数字
预期输出:
arrOfNumbers = [12131, 543212601]
我该怎么做?
编辑:
由于您的数组包含字典,因此方法是根据您的数组检查每个字典。喜欢以下内容:
var arrOfNumbers : [String] = []
for dict in arrOfDictContacts {
for name in arrOfNames {
if let value = dict[name] as? String {
arrOfNumbers.append(value)
}
}
}