Выделение случайной строки из списка и ее отображение в текстовом поле.

Эй, я очень новичок в программировании для iPhone, и я часами искал и на этом сайте, и в Google решение моей проблемы. В основном я пытаюсь создать приложение, которое выбирает случайную строку из моего списка и отображает ее в текстовое поле. Я пробовал бесчисленное количество способов, но этот способ, кажется, работает лучше всего, однако он все равно дает сбой, когда я нажимаю кнопку, и выдает ошибку "EXC_ARITHMETIC" в строке arc4random. Помимо этой ошибки, NSLog(@"items: &@", items) отображает элементы: (ноль) в журнале, когда я нажимаю кнопку. Любая помощь или предложения с благодарностью. PS items - это NSMutableArray, который я уже настроил в файле.h

-(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>

Еще раз спасибо, ребята, за вашу помощь!

3 ответа

Решение

Ваша проблема в том, что ваш список не является массивом, это словарь. Поэтому вам нужно либо изменить свой список, либо вместо этого читать его как словарь.

@ Брайман Я выполнил твой код, он отлично работает для меня. Пожалуйста, однажды воссоздайте файл plist. Как вы говорите, он содержит массив, поэтому я проверил ваш код, добавив массив в файл plist.

Скорее всего, вы просто не можете прочитать список, просто проверьте структуру списка,


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


ваш список должен соответствовать этой структуре и читать с ключа ROOT, а не с массива, надеюсь, это поможет:) не волнуйтесь, мне потребовалось много времени, чтобы понять, почему я не смог прочитать мой> <


<plist version="1.0">
<dict>
<key>Root</key>
    <array>
        <string>Happy</string>
        <string>Rain</string>
    </array>


Другие вопросы по тегам