извлечение данных из списка - PullRequest
1 голос
/ 21 июля 2010

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

-(IBAction) buttonPress {

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

    [myMessage setText:path];
}

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

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

[myMessage setText:path];

на

[myMessage setText:[array objectAtIndex:x]; //x = whatever index in the array contains your string.

Также вы можете изменить свой plist, чтобы он содержал 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 и х-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;
}

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

0 голосов
/ 21 июля 2010

Это именно то, что вы говорите.

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

[myMessage setText:[array lastObject]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...