如何将数据从Web服务填充到UIPickerView? [iOS应用开发]

时间:2011-08-11 03:03:27

标签: iphone objective-c xcode web-services uipickerview

任何人都知道如何填充,例如从Web服务到UIPickerView的类别列表? 此外,是否可以存入隐藏价值?

实施例,
“隐藏ID为”1“的”公共“
“隐藏身份”为“2”的“会员”等等。

这两个值来自web服务。我顺便使用ASIHTTPRequest框架。

我是iOS / XCode / Objective C的新手。希望有人能帮忙):谢谢

===============回复================

@MSgambel
好吧,尽我所能解释。至于现在,我们如何将项目放入UIPickerView:

[NSArray arrayWithObjects:@“John Appleseed”,@“Chris Armstrong”,@“Serena Auroux”,@“Susan Bean”,@“Luis Becerra”,@“Kate Bell”,@“Alain Briere”,零];

而不是上面的那些项目,如何将项目从Web服务填充到选择器?

@Akshay
我隐含的意思是选择器将有2个值,但只有标签“Public”在选择器上可见而不是id“1”。我想实现它有点类似于网站上的下拉菜单。

在名为“Domain”的数据库中,我们有以下格式的值:
DomainID:DomainName
1:公众
2:CompanyA
3:CompanyB
将有另一个数据库“Users”,它与DomainID绑定。 (只是一个例子)

选择器将在界面上显示“Public”,当用户选择它时,它将具有值“1”。那么无论如何我可以做这样的事情吗?

2 个答案:

答案 0 :(得分:1)

首先,您没有提供有关Web服务详细信息的大量详细信息。假设它是基于SOAP的,那么我强烈推荐sudzcwsd2lobjc。这些将为您生成代码,以便将您的WSDL def转换为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];

array = [NSArray arrayWithObjects:dict1,dict2,dict3,nil];

并在你的UIPickerViewDelegate方法中

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

return [[self.array objectAtIndex:row] objectForKey:@"looksGoodValue"];

}

最后在你使用pickerview的任何地方(比如你的网络服务)

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

希望这有帮助!

答案 1 :(得分:0)

在使用ASIHTTPRequest加载它们之后,我会将这些值保存在propertyList中。要保存文件,请使用

`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],//添加所有字符串,如nil]]; [array writeToFile:path atomically:YES];`

然后使用[NSMutableArray alloc] initWithContentsOfFile:path]将值加载到pickerView中。