从Plist中读取特定行

时间:2012-12-17 01:39:36

标签: objective-c string random plist

您好我一直在寻找,似乎无法找到我的问题的答案。我对编程的经验很少,尤其是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;

我不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

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

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

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

注意

您必须明确检查数组是否永远为空才能使上述代码正常工作,因为 arc4random_uniform(0)会返回0,因此如果是空数组,则会生成NSRangeException