Вывод данных в NSString из plist - PullRequest
0 голосов
/ 31 июля 2011

Я извлекаю некоторые строковые данные из plist:

<dict>
<key>Feb 7, 2000</key>
<array>
    <string>7</string>
    <string>8</string>
</array>
<key>Jan 27, 2001</key>
<array>
    <string>8</string>
    <string>7</string>
</array>

и использую следующий код для вывода данных в UILabel:

  NSString * myString = [NSString stringWithFormat:@"%@",self.data];

    myLabel.text = myString;

, вывод отображаетсякак ( 7, 8)

кто-нибудь знает, как я мог бы удалить скобки и запятую.а также разделяя значения, чтобы я мог отобразить что-то вроде first: 7 second: 8

1 Ответ

5 голосов
/ 31 июля 2011

Пример:

<dict>
<key>Feb 7, 2000</key>
<array>
    <string>7</string>
    <string>8</string>
</array>
<key>Jan 27, 2001</key>
<array>
    <string>8</string>
    <string>7</string>
</array>
</dict>

Код:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; 

for(id key in dict) {
    NSLog(@"First:%@ Second:%@", [[dict objectForKey:key] objectAtIndex:0],  [[dict objectForKey:key] objectAtIndex:1]);
}

Выход:

First:7 Second:8
First:8 Second:7


РЕДАКТИРОВАТЬ (ответ на комментарий)

Сначала вам нужно определить ключи в NSMutableDictionary.
Загрузите файл .plist, выполните цикл и добавьте ключи в NSMutableArray.

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; 
NSMutableArray *keys = [[NSMutableArray alloc] init];
for(id key in dict) [keys addObject:[NSString stringWithFormat:@"%@",key]];

Убедитесь, что массив может быть доступен с помощью UIPickerView.
UIPickerView должен иметь возможность получать ключи следующим образом:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
    return [keys objectAtIndex:row];
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
    return [keys count];
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
    return 1;
}

Наконец, обновите UILabel следующим образом:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    theLabel.text = [NSString stringWithFormat:@"First:%@ Second:%@", 
                      [[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:0],  
                      [[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:1]];
}

UIPickerView теперь содержит следующие строки:

Feb 7, 2000
Jan 27, 2001

Когда, например, выбрано «27 января 2001», UILabel показывает:

First:8 Second:7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...