Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中获取存储在NSMutableArray中的NSDictionary元素?_Ios_Swift_Nsmutablearray_Nsdictionary - Fatal编程技术网

Ios 如何在Swift中获取存储在NSMutableArray中的NSDictionary元素?

Ios 如何在Swift中获取存储在NSMutableArray中的NSDictionary元素?,ios,swift,nsmutablearray,nsdictionary,Ios,Swift,Nsmutablearray,Nsdictionary,我已通过以下方法将联系人作为字典存储在可变数组中: var addressBookReff: ABAddressBookRef = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue() var arrOfDictContacts:NSMutableArray = NSMutableArray() let people:NSArray = ABAddressBookCopyArrayOfAllPeople(add

我已通过以下方法将联系人作为字典存储在可变数组中:

 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的相应号码

预期输出:

我该怎么做

编辑:

因为数组包含字典,所以方法是根据数组检查每个字典。例如:

var arrOfNumbers : [String] = []
for dict in arrOfDictContacts {
    for name in arrOfNames {
        if let value = dict[name] as? String {
            arrOfNumbers.append(value)
        }
    }
}

第三行名称中出现错误,该字符串无法转换为IntCheck out my edit。由于字典值是字符串,因此结果数组必须是[String]。请立即检查它。问题是你有一个字典数组,但是编辑过的版本现在应该适合你了。现在没有错误,但是我也没有得到任何输出。如果我打印arrofNumber,则获取[]。如果我把断点放在两个for循环中,它不会停止,也不会进入for循环,我想你是对的。我的arrOfDictContacts是空的,因为我在不知不觉中宣布复制。现在它是一种魅力。谢谢您:
var arrOfNumbers : [String] = []
for dict in arrOfDictContacts {
    for name in arrOfNames {
        if let value = dict[name] as? String {
            arrOfNumbers.append(value)
        }
    }
}