Objective-C:Randomizer objectAtIndex不对所有类型进行排序

时间:2015-09-27 10:47:25

标签: ios objective-c arc4random

所以我有一个“食物”表有三种类型:“餐,甜点和零食”。我将这些类别附加到“搜索选项”页面中的按钮,它们基本上执行“从食物中选择*类型='餐点'”这样的事情并且工作正常。

问题在于,当我尝试从“全部”(“从食物中选择*”)中随机检索一个对象时,它只返回饭菜。我认为这可能是“objectAtIndex:0”的问题?

ranDom = [_entries bjl_shuffledArray];
        Place *p = [ranDom objectAtIndex:0];

所以我也尝试将索引随机化:

NSInteger randomIndex = arc4random()%[_entries count];
        ranDom = [_entries bjl_shuffledArray];
        Place *p = [ranDom objectAtIndex:randomIndex];

...但它似乎只是从膳食中检索结果......而不是“食物”中的其他两种类型。

我知道如何才能更好地返回所有三种类型的结果?

编辑:以下是bjl_shuffled_array的工作原理:

- (NSArray *)bjl_shuffledArray
{
    NSMutableArray *shuffledArray = [self mutableCopy];
    NSUInteger arrayCount = [shuffledArray count];

     if (arrayCount > 0) {
    for (NSUInteger i = arrayCount - 1; i > 0; i--) {
        NSUInteger n = arc4random_uniform(i + 1);
        [shuffledArray exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
     }
    return [shuffledArray copy];
}

1 个答案:

答案 0 :(得分:0)

所以“_entries”只返回30个结果。我知道某处必须有限制,因为应该有大约306件物品。首先,我检查了应用程序的所有代码中的数字“30”并没有找到任何结果。所以我检查了PHP文件,发现有人偷偷摸摸:

$rows_per_page = 30;

将“30”改为“3000”,现在一切都与世界相符。感谢Rich Tolley的帮助。