0

嗨,我一直在寻找,似乎无法找到我的问题的答案。我几乎没有编程经验,尤其是 Objective-C。
在我的应用程序中有一个plist带有一定数量的字符串。当用户点击一个按钮时,程序会计算 plist 中字符串的数量,在该范围内创建一个随机数,并应该读取 plist 中具有该特定数字的行。假设 plist 中有 20 个字符串,并且应用程序生成了数字 5,那么应用程序应该读取 plist 中的第 5 个字符串。

有没有办法做这样的事情,还是有另一种更有效的方法来完成这个?任何帮助是极大的赞赏。谢谢。

编辑:在我的 .h 文件中,我有

NSMutableArray* myArray;
int plistCount;
int randomNumber; 
}
@property (nonatomic, retain) NSMutableArray* myArray;

在我的 .m 文件中,我有

NSString *path = [[NSBundle mainBundle] pathForResource:@"myplist" ofType:@"plist"];
    NSMutableArray* tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
    self.myArray = tmpArray;
plistCount=[self.resorts count];
randomNumber=arc4random() % plistCount;

我不知道从这里去哪里。

4

1 回答 1

0
NSString * randomString = self.myArray[arc4random_uniform(self.myArray.count)];

上面的代码是从 中选择一个随机元素self.myArray

arc4random_uniform生成一个介于 0 和参数(排除)之间的数字,因此将self.myArray.count其用作边界,您将获得数组的有效随机索引。

笔记

您必须明确检查该数组永远不会为空,以使上述代码能够正常工作,因为 arc4random_uniform(0)返回0,因此如果为空数组,它将生成一个NSRangeException.

于 2012-12-17T02:05:24.917 回答