получение по запросу данных из plist

Я пытаюсь вытянуть некоторые данные из plist файла и отобразить его в текстовом поле (от щелчка UIButton). код ниже вытягивает адрес plist а не данных. любая справка значительно ценится.спасибо

-(IBAction) buttonPress {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"];
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];

    [myMessage setText:path];
}
1
задан Vladimir 21 July 2010 в 16:50
поделиться

2 ответа

да, вы распечатываете путь, не какой-либо элемент в массиве. Измените

[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;
}

, надеюсь, это сработает. Раньше я не пробовал ...

2
ответ дан 2 September 2019 в 22:52
поделиться

Он делает именно то, что вы ему говорите.

Предполагая, что messages.plist содержит массив строк, вы можете легко получить последний элемент в массиве:

[myMessage setText:[array lastObject]];
0
ответ дан 2 September 2019 в 22:52
поделиться