ios - 通过确保每次使用数组的不同元素来创建 for 循环

标签 ios arrays swift swift3

这是我的循环

for category in categories! {
    NearbyPlaces.getNearbyPlaces(by: category?.name ?? "food", coordinates: currentLocation!, radius: radius, token: self.response?.nextPageToken, completion: didReceiveResponse)  
}

其中categories是一个数组,其中包含地点类别(谷歌地点)(如餐厅、健身房、酒吧)的列表,我将它与许多其他函数一起使用来搜索附近的地点这些类别。我的问题是这样的,现在就像现在一样,一切正常,所以如果在我的数组 categories 中,我有 2 个元素:酒吧和健身房,在我附近有 10 家餐厅和 10 家健身房,他会在我的 tableView 中加载 10 个餐厅和 10 个健身房。但是现在我对可加载位置添加了限制,我遇到了一个问题,如果我周围有 10 家餐厅和 10 家健身房,并且限制是(例如)4 个,他不会加载给我 2 家餐厅和 2 家健身房,而是 4 家餐厅或 4 个健身房,取决于数组中第一个出现的元素,所以我想知道如何修改循环,以便它始终使用数组的不同元素(所以一次使用索引 0 中的元素,在元素之后在索引 1 等中)

编辑

你们是对的,但要清楚地解释我的问题并不容易,基本上我有两个 VC,都有一个 tableView,在第一个中,您可以选择多个类别的地点(谷歌地点),他们将去填充数组类别,第二个应该根据前一个 Controller 中选择的类别加载 x 半径(地理定位)中的 x 位置,如果我不添加可以在我的 TableView 中加载的位置限制,则循环将完全迭代一个接一个的类别,问题是他不会一次按类别加载一个位置,而是加载第一个项目/类别的所有位置,然后加载第二个项目/类别的所有位置,等等。因此,如果我添加一个限制,例如 4 和 i在我的数组中选择了两个类别,他不会加载第一个类别的 2 个位置和第二个类别的两个位置,但如果靠近我(例如)有 4 个或更多位置的第一个类别的类型,他将加载 4 个第一种类型的地方,所以这是我的问题

最佳答案

我建议您为该类别生成一个可能匹配的数组,然后使用shuffle 随机化数组中结果的顺序。这样你每次都会得到一组不同的匹配(当然取决于你对该类别有多少实际结果)

How do I shuffle an array in Swift?

关于ios - 通过确保每次使用数组的不同元素来创建 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47176775/

相关文章:

swift - 为什么 Swift 中的公共(public)类/结构需要显式公共(public)初始化程序?

swift - WCSession 代表 |是否需要同步调用回复处理程序?

ios - 如何在 swift 中存储 sqlite blob

java - 将计算值存储到数组中

javascript - 将字符串拆分为 n 长度的数组

ios - Swift - 在动态 TableCell 上继续

ios - 为什么 viewDidLoad() 被调用两次?

iphone - iOS 7 状态栏问题

ios - 为 UICollectionView 中的所有 UICollectionViewCell 设置动画

python - 如何打乱列表中的顺序?