Как заполнить данные из веб-сервиса в UIPickerView?[Разработка приложений для iOS] - PullRequest
5 голосов
/ 11 августа 2011

Кто-нибудь знает, как заполнить, например, список категорий, из веб-службы в UIPickerView?Кроме того, возможно ли поставить скрытое значение?

Пример,
«Public» со скрытым идентификатором «1»
«Member» со скрытым идентификатором «2» и т. Д.

Эти 2 значения предназначены длябыть из веб-службы.Кстати, я использую фреймворк ASIHTTPRequest.

Я новичок в iOS / XCode / Objective C. Надеюсь, кто-нибудь сможет помочь): Спасибо

=============== Ответ ================

@ MSgambel
Хорошо, постараюсь объяснить.На данный момент, как мы помещаем элементы в UIPickerView:

[NSArray arrayWithObjects: @ "John Appleseed", @ "Chris Armstrong", @ "Serena Auroux", @ "Susan Bean", @ "Luis Becerra", @" Кейт Белл ", @" Ален Бриер ", ноль];

вместо перечисленных выше элементов, как мне заполнить элементы из веб-сервиса в сборщике?

@ Akshay
То, что я имел в виду под скрытым, заключается в том, что средство выбора будет иметь 2 значения, но на устройстве выбора будет видна только метка «Public», а не идентификатор «1».Я хотел бы реализовать его в некоторой степени аналогично выпадающему меню на веб-сайтах.

В базе данных под названием «Домен» у нас есть значения в следующем формате:
DomainID: DomainName
1: Public
2: CompanyA
3: CompanyB
Будет еще одна база данных «Пользователи», где она привязана к DomainID.(Просто пример)


Средство выбора покажет «Public» на интерфейсе, когда пользователь выберет его, он будет иметь значение «1».Так могу ли я так поступить?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Прежде всего, вы не предоставили много подробностей о вашем веб-сервисе.Предполагая, что он основан на SOAP, я настоятельно рекомендую sudzc или wsd2lobjc .Они сгенерируют код для вас, чтобы довольно хорошо конвертировать ваши WSDL-определения в классы Objective C.

Что касается вопроса о «скрытых» значениях UIPickerView, то это довольно просто.Создайте NSArray из NSDictionaries.Используя ваш пример (при условии, что все строки):

NSDictionary *dictOne = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"realValue",@"Public",@"looksGoodValue",nil]; NSDictionary *dictTwo = [NSDictionary dictionaryWithObjectsAndKeys:@"2",@"realValue",@"CompanyA",@"looksGoodValue",nil]; NSDictionary *dictTre = [NSDictionary dictionaryWithObjectsAndKeys:@"3",@"realValue",@"CompanyB",@"looksGoodValue",nil];</p> <p>array = [NSArray arrayWithObjects:dict1,dict2,dict3,nil];

и в вашем методе UIPickerViewDelegate

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {</p> <p>return [[self.array objectAtIndex:row] objectForKey:@"looksGoodValue"];</p> <p>}

и, наконец, во всем, что выиспользуйте окно выбора для (скажем, вашего веб-сервиса)

request.realValue = [[self.array objectAtIndex:[pickerView selectedRowInComponent:0]] valueForKey:@"realValue"];

Надеюсь, это поможет!

0 голосов
/ 11 августа 2011

Я бы сохранил эти значения в propertyList после того, как вы загрузили их с помощью ASIHTTPRequest. Для сохранения файлов используйте

`NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

NSString * documentsDirectory = [paths objectAtIndex: 0];

NSString * path = [documentsDirectory stringByAppendingPathComponent: @ "data.plist"];

NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject: [NSArray arrayWithObjects: [NSString stringWithFormat: @ "% @", stringOne], // добавляем все ваши строки, как этот ноль]]; [массив writeToFile: путь атомарно: ДА]; `

Затем используйте [NSMutableArray alloc] initWithContentsOfFile:path] для загрузки ваших значений в pickerView.

...