我查询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
}
}
答案 0 :(得分:2)
在
let contactList = List<Contact>()
for var index = 0; index < randomIndices.count; index++ {
let contact = contacts[index]
contactList.append(contact)
}
index
从0
到randomIndices.count - 1
,这就是原因
你得到了第一批联系人。
你可能意味着
let contactList = List<Contact>()
for index in randomIndices {
let contact = contacts[index]
contactList.append(contact)
}
以便index
遍历随机数组的元素。
请注意,循环可以简化为
let contactList = randomIndices.map { contacts[$0] }