我创建了这个plist作为字典,以保持书名为键:
<dict>
<key>Frankestein</key>
<dict>
<key>0</key>
<string>his name was frank</string>
<key>1</key>
<string>he was a monster</string>
</dict>
<key>dracula</key>
<dict>
<key>0</key>
<string>his name was dracula</string>
<key>1</key>
<string>he was a vampire</string>
</dict>
</dict>
</plist>
然后将plist加载到字典中:
NSDictionary *plisttext2 = [NSDictionary dictionaryWithContentsOfFile:@"text2.plist"];
我如何能够从字典中生成和显示随机句子,并显示句子编号和书名(键)?
感谢您的帮助!!
答案 0 :(得分:1)
首先,NSDictionary *plisttext2 = [NSDictionary dictionaryWithContentsOfFile:@"text2.plist"];
将不起作用。 ContentsOfFile
参数需要完整路径,而不是相对路径文件名。为此,请使用:
NSBundle* bundle = [NSBundle mainBundle];
NSString* plistPath = [bundle pathForResource:@"text2" ofType:@"plist"];
NSDictionary* plisttext2 = [NSDictionary dictionaryWithContentsOfFile:plistPath];
现在要生成并显示随机句子,您需要跟踪所有键:
NSArray* keys = [plisttext2 allKeys]
然后使用索引选择随机密钥:
int randomIndex = arc4random() % (keys.count);
NSString* key = [plisttext2 objectForKey:[keys objectAtIndex:randomIndex]];
使用随机选择的键,您可以访问本书的句子,并使用相同的方法随机选择它们。选择之后,将它们全部加在一起,就可以得到结果。
这意味着您可以从不同的书籍中生成随机句子,同时仍然可以显示句子编号+书名(因为您一直保留他们的索引来引用它们)。
答案 1 :(得分:0)
您可以遍历plist以确定每个字典的最大键值,然后执行类似于下面的代码的操作,从每个字典中随机选择一个句子。
int min = 0;
int max = iterationResult;
int randNum = rand() % (max-min) + max; //create the random number.
NSLog(@"RANDOM NUMBER: %i", randNum);