2

嘿,我对 iPhone 编程很陌生,我一直在这个网站和谷歌上搜索几个小时来解决我的问题。基本上我正在尝试制作一个应用程序,它从我的 plist 中选择一个随机字符串并将其显示到一个文本字段中。我尝试了无数种方法,但这种方法似乎效果最好,但是当我按下按钮时它仍然崩溃并在 arc4random 行上给我错误“EXC_ARITHMETIC”。除了这个错误,当我按下按钮时, NSLog(@"items: &@", items) 在日志中显示 items: (null) 。非常感谢任何帮助或建议。PS items 是我已经在 .h 文件中设置的 NSMutableArray

-(IBAction)buttonPress {
    NSString* path = [[NSBundle mainBundle] pathForResource:@"ItemList" ofType:@"plist"];
    items = [[NSMutableArray alloc]initWithContentsOfFile:path];
    NSLog(@"items: %@", items);
    NSInteger randomIndex = arc4random() % [items count];
    NSString* randomString = [items objectAtIndex:randomIndex];
    textField.text = randomString;
}

这是plist代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Array</key>
<array>
    <string>AAA</string>
    <string>BBB</string>
    <string>CCC</string>
    <string>DDD</string>
    <string>EEE</string>
    <string>FFF</string>
    <string>GGG</string>
    <string>HHH</string>
    <string>III</string>
    <string>JJJ</string>
</array>

再次感谢大家的帮助!

4

3 回答 3

0

您的问题是您的 plist 不是数组,而是字典。所以要么你需要改变你的 plist,要么你需要把它当作字典来读。

于 2012-12-22T04:46:00.460 回答
0

很可能您根本无法阅读 plist,只需检查您的 plist 结构,

 NSString *StringsFromPList = [[NSBundle mainBundle] bundlePath];
 NSString *itemPositionPlistLocation = [StringsFromPList stringByAppendingPathComponent:@"Words.plist"];
 _myDictionary= [[NSDictionary alloc] initWithContentsOfFile:itemPositionPlistLocation];
NSArray * items = [_myDictionary objectForKey:@"Root"];

你的 plist 应该匹配这个结构并且从 ROOT 键而不是数组读取希望它有帮助:) 别担心我花了很长时间才找到为什么我无法阅读我的><

<plist version="1.0">
<dict>
<key>Root</key>
    <array>
        <string>Happy</string>
        <string>Rain</string>
    </array>
于 2013-06-13T20:50:16.123 回答
0

@Bryman 我已经执行了你的代码,它对我来说很好。请重新创建您的 plist 文件。正如您所说,它包含数组,所以我通过将数组添加到 plist 文件来测试您的代码。

于 2012-12-20T09:10:23.140 回答