2

ねえ、私はiPhoneプログラミングにとても慣れていないので、このサイトとグーグルの両方で私の問題の解決策を何時間も探していました。基本的に、plistからランダムな文字列を選択してテキストフィールドに表示するアプリを作成しようとしています。数え切れないほどの方法を試しましたが、この方法が最も効果的であるように見えますが、ボタンを押すとクラッシュし、arc4random行に「EXC_ARITHMETIC」というエラーが表示されます。このエラーに加えて、NSLog(@ "items:&@"、items)は、ボタンを押すとログにitems :( null)を表示します。どんな助けや提案も大歓迎です。PSアイテムは、.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

@Bryman私はあなたのコードを実行しました、それは私のためにうまく働いています。plistファイルを一度再作成してください。あなたが言っているように、それは配列を含んでいるので、私は配列をplistファイルに追加することによってあなたのコードをテストしました。

于 2012-12-20T09:10:23.140 に答える
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 に答える