Я пытаюсь вытянуть некоторые данные из plist файла и отобразить его в текстовом поле (от щелчка UIButton). код ниже вытягивает адрес plist а не данных. любая справка значительно ценится.спасибо
-(IBAction) buttonPress {
NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"];
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];
[myMessage setText:path];
}
да, вы распечатываете путь, не какой-либо элемент в массиве. Измените
[myMessage setText:path];
на
[myMessage setText:[array objectAtIndex:x]; //x = whatever index in the array contains your string.
Также вы можете изменить свой список, чтобы он содержал dict, а не массив, чтобы вы могли вызывать определенный текст -
-(IBAction) buttonPress {
NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
[myMessage setText:[dict objectForKey:@"text"]];
}
В ответ на ваш вопрос о arc4random.
Создайте перечисление, чтобы вы могли создать оператор switch -
typedef enum {
MESSAGE1,
MESSAGE2,
MESSAGE3
} messageIDs;
затем создайте случайное целое число и измените его на x, чтобы вы получили число между 0 и x-1. (В данном случае, поскольку у нас есть 3 элемента внутри перечисления, x = 3)
int randomValue = arc4random() % 3;
затем используйте этот случайный int в операторе switch
switch (randomValue) {
case MESSAGE1:
[myMessage setText:[dict objectForKey:@"message1"]]; //or [myMessage setText:[array objectAtIndex:MESSAGE1]]
break;
case MESSAGE2:
[myMessage setText:[dict objectForKey:@"message2"]];
break;
case MESSAGE3:
[myMessage setText:[dict objectForKey:@"message3"]];
break;
default:
break;
}
, надеюсь, это сработает. Раньше я не пробовал ...
Он делает именно то, что вы ему говорите.
Предполагая, что messages.plist содержит массив строк, вы можете легко получить последний элемент в массиве:
[myMessage setText:[array lastObject]];