Выделение случайной строки из списка и ее отображение в текстовом поле.
Эй, я очень новичок в программировании для 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>