将 plist 文件中的两个数组合并为一个
Posted
技术标签:
【中文标题】将 plist 文件中的两个数组合并为一个【英文标题】:merge two arrays from a plist file into one 【发布时间】:2014-03-20 09:58:50 【问题描述】:基本上我已经创建了一个应用程序,它从给定的 plist 中选择随机字符串,然后将它们显示给用户。目前我有一个说真话目录和一个敢说目录,用户点击真话表示真话,当他们点击它表示敢于表示敢。
保持相同的结构,我想添加一个随机按钮以允许用户随机单击,它显示了一个事实或一个大胆我将如何从两个数组中读取数据。
我想将两个数组合二为一,然后输出一个随机问题。我试图用谷歌搜索它,但似乎卡在了这个上。
这是我的代码
- (IBAction)dare:(id)sender
NSString *path = [[NSBundle mainBundle] pathForResource:
@"extreme" ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *plistArray = plistDict[@"dare"];
int randV = arc4random() % plistArray.count;
self.joke.text = plistArray[randV];
NSLog(@"dictionary: %@, array: %@", plistDict, plistArray);
Plist 结构
- (IBAction)truth:(id)sender
NSString *path = [[NSBundle mainBundle] pathForResource:
@"extremem" ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *plistArray = plistDict[@"truth"];
int randV = arc4random() % plistArray.count;
self.joke.text = plistArray[randV];
NSLog(@"dictionary: %@, array: %@", plistDict, plistArray);
另外,我如何确保用户不会被问两次相同的问题?我在考虑按照变量设置是或否,如果是,那么问,然后不问?我们将如何做到这一点?
【问题讨论】:
【参考方案1】:我想出了这段代码。唯一的问题是我似乎无法释放数组?
你们怎么看?
- (IBAction)truth:(id)sender
NSString *path = [[NSBundle mainBundle] pathForResource:
@"test" ofType:@"plist"];
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *plistArray = plistDict[@"truth"];
NSDictionary *plistDict2 = [[NSDictionary alloc] initWithContentsOfFile:path];
NSMutableArray *plistArray2 = plistDict2[@"dare"];
plistArray = [plistArray arrayByAddingObjectsFromArray:plistArray2];
NSLog(@"%@", plistArray);
int randV = arc4random() % plistArray.count;
self.joke.text = plistArray[randV];
NSLog(@"dictionary: %@, array: %@", plistDict, plistArray);
【讨论】:
为什么要释放数组?这些是在函数退出后立即释放的局部变量。 哦,是的,对不起,我是初学者,这仍然是全新的以上是关于将 plist 文件中的两个数组合并为一个的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个有序数组合并为一个有序数组,用函数做,一个循环搞定?