gpt4 book ai didi

ios - NSDictionary 的 NSArray - 当数组中只有一个字典而不是一个对象的数组时返回 NSDictionary

转载 作者:行者123 更新时间:2023-11-28 21:45:50 26 4
gpt4 key购买 nike

我对 Objective C 比较陌生。我有一个包含 NSDictionary 对象的 NSArray。我正在调用网络服务来获取数据。我有一个 PickerView,这是它的数据源(我实现了 numberOfRows):

- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *proba = self.viewModel.searchResult.someArray[row];
return nil;
}

这是我的“proba”,数组中有 3 个 NSDictionaries:

enter image description here

这是我的 'proba',数组中只有 1 个 NSDictionary

enter image description here

问题是当我的服务返回 1 个字典时,我需要在数组中有 1 个 NSDictionoray 对象。如何解决这个问题?谢谢

编辑:我的服务数组,这是我的选择器

- (void)SOAPManager:(SOAPManager *)client didSuccesWithoutError:(id)responseObject
{
SearchResult *result = [SearchResult new];
result.myArray = [responseObject allValues];
self.Result = result;
NSLog(@"Loaded successfully: %@", result.retailers);

}

'self.Result' 是通过 RACObserver 观察到的,所以我可以在我的 ViewModel 中使用它。

这是结果。有 3 个词典的零售商:

enter image description here

还有一本字典:

enter image description here

是的,当只有一个对象时,它只返回字典

最佳答案

你的问题不清楚,但我猜你有一个网络服务,如果有多个结果,它返回一个数组,但如果只有一个,则只返回结果本身,而你想要的是一个数组后一种情况的一个结果。

您可以通过使用 isKindOfClass: 检查您的网络服务返回的值的类来解决这个问题。概括地说,这可能是:

id myWebServiceResult = ...;

if (![myWebServiceResult isKindOfClass:[NSArray class]]) // note the ! - not
{
// the result is not an array, make it an array of one item
myWebServiceResult = @[ myWebServiceResult ];
}

HTH

关于ios - NSDictionary 的 NSArray - 当数组中只有一个字典而不是一个对象的数组时返回 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com