领域:结果<t> [index]无法正常工作

时间:2015-11-27 08:12:01

标签: swift realm

我查询1000个联系人的结果,按姓氏排序。然后我创建随机索引并查询对象。但是,我没有随机联系,而是获得了前n个联系人...为什么排序结果中的对象可以通过索引解决,如果这不正常工作?

if let contacts = ContactsProvider.sharedInstance.loadContactsWithReload(){

    if(contacts.count <= 1){
        return nil;
    }

    if(contacts.count <= 10){
        random10Group.contacts.appendContentsOf(contacts)
    }
    else{
        var randomIndices = [Int]()
        while randomIndices.count < 10{

            let random = Int(arc4random_uniform(UInt32(contacts.count)))
            if(!randomIndices.contains(random)){
                randomIndices.append(random)
                print(random)
            }
        }

        let contactList = List<Contact>()

        for var index = 0; index < randomIndices.count; index++ {
            let contact = contacts[index]
            contactList.append(contact)
            print(contact.fullName())
        }

        random10Group.contacts = contactList

        return random10Group
    }
}

1 个答案:

答案 0 :(得分:2)

let contactList = List<Contact>()
for var index = 0; index < randomIndices.count; index++ {
    let contact = contacts[index]
    contactList.append(contact)
}

index0randomIndices.count - 1,这就是原因 你得到了第一批联系人。

你可能意味着

let contactList = List<Contact>()
for index in randomIndices {
    let contact = contacts[index]
    contactList.append(contact)
}

以便index遍历随机数组的元素

请注意,循环可以简化为

let contactList = randomIndices.map { contacts[$0] }