Swift - 访问地址簿以获取数字数组

时间:2016-01-25 19:33:17

标签: ios swift

我一直试图这样做一段时间,即访问手机上的联系人并获取阵列上的所有手机号码,但到目前为止还没有达到远。我今天遇到了一个图书馆那种清理过程的方法,但我只是把数字放到一个数组中。

以下是代码:

SwiftAddressBook.requestAccessWithCompletion({ (success, error) -> Void in
            if success {
                if let people = swiftAddressBook?.allPeople {
                    for person in people {
                        NSLog("%@", (person.phoneNumbers?.map( {$0.value} ))!)
                    }
                }
            }
            else {
                //no success. Optionally evaluate error
                print("Access Red")
            }
        })

当NSLog打印时,我在控制台中得到以下内容:

2016-01-25 19:24:20.392 app[39001:7408159] (
    "(555) 564-8583",
    "(415) 555-3695"
)
2016-01-25 19:24:20.393 app[39001:7408159] (
    "555-478-7672",
    "(408) 555-5270",
    "(408) 555-3514"
)
2016-01-25 19:24:20.393 app[39001:7408159] (
    "888-555-5512",
    "888-555-1212"
)
2016-01-25 19:24:20.393 app[39001:7408159] (
    "555-522-8243"
)
2016-01-25 19:24:20.393 app[39001:7408159] (
    "(555) 766-4823",
    "(707) 555-1854"
)
2016-01-25 19:24:20.394 app[39001:7408159] (
    "555-610-6679"
)

如何才能将这些联系人的数字转换为String类型的数组?这里的目的是在后端实际查询该数组,并通过电话号码获取所有成员。

如果需要进一步参考,则链接到此库:

Link To Library

1 个答案:

答案 0 :(得分:1)

基本上你要打印的是很多较小的阵列,类似于同一个人的一组电话号码。我会把所有那些较小的数组合并为一个。

这个怎么样:

SwiftAddressBook.requestAccessWithCompletion({ (success, error) -> Void in
        if success {
            if let people = swiftAddressBook?.allPeople {
                let arrayOfArrays = people.flatMap({$0.phoneNumbers?.map( {$0.value})})
                print(arrayOfArrays.flatMap({ $0 }))
            }
        }
        else {
            //no success. Optionally evaluate error
            print("Access Red")
        }
    })