将 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 文件中的两个数组合并为一个的主要内容,如果未能解决你的问题,请参考以下文章

将两个数组合并为一个 Laravel PHP [重复]

将两个数组合并为一个JS

如何将两个有序数组合并为一个有序数组,用函数做,一个循环搞定?

将两个有序数组合并为一个有序数组

怎样把两个数组合并为一个?用VB写?好心人帮忙啦,急用!最好用插入法写的。

如何将两个数组合并为一个相应的2d数组?