Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 数组对象字典访问整个数组_Ios_Objective C_Arrays_Search_Dictionary - Fatal编程技术网

Ios 数组对象字典访问整个数组

Ios 数组对象字典访问整个数组,ios,objective-c,arrays,search,dictionary,Ios,Objective C,Arrays,Search,Dictionary,我正在尝试访问beers数组中的每个名称以获得搜索算法。我将数组设置为字典,但它的行为与字典不太一样。以下是数据的外观: 为了让您了解我是如何访问阵列的,下面是我如何填充uitableview的。因此,基本上我知道如何访问阵列中的单个对象,但无法访问整个阵列: cell.detailTextLabel.text=[self.beers[indexPath.row] name] 那么我可能又一次完全偏离了底线。我还在这里学习objective c和ios,如果我的经验不足在我的帖子中表现出来的话

我正在尝试访问beers数组中的每个名称以获得搜索算法。我将数组设置为字典,但它的行为与字典不太一样。以下是数据的外观:

为了让您了解我是如何访问阵列的,下面是我如何填充uitableview的。因此,基本上我知道如何访问阵列中的单个对象,但无法访问整个阵列:

cell.detailTextLabel.text=[self.beers[indexPath.row] name]

那么我可能又一次完全偏离了底线。我还在这里学习objective c和ios,如果我的经验不足在我的帖子中表现出来的话,我很抱歉。任何提示都有帮助。谢谢大家

通过循环遍历数组,可以访问数组中的所有名称

for ( Beer *beer in self.beers )
    NSLog( @"%@", beer.name );

我假设您想要一个新数组,它只包含每个
Beer
对象的名称,而不是对象本身。您可以使用类似于此类别的数组“映射”函数

typedef id(^MapBlock)(id input);

@implementation NSArray (Additions)
- (NSArray *)arrayByMappingWithBlock:(MapBlock)block {
    NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:self.count];
    for (id obj in self) {
        [array addObject:block(obj)];
    }
    return array;
}
@end
然后你会像这样使用它

NSArray *beerNames = [self.beers arrayByMappingWithBlock:^id(Beer *beer) {
    return beer.name;
}];

不确定这是否是您想要实现的,但下面的行将生成一个包含所有啤酒名称的数组:

[self.beers valueForKeyPath:@"name"];

假设
Beer
是一个自定义类,有一个名为
name
NSString
属性,对吗?@user3386109是的,这是正确的。现在你们正在为我编写代码,但对于记录,我在使用以下内容实现时遇到了此运行时错误:valueForUndefinedKey::该类不符合键名称的键值编码。然后,“name”不是Beer类的属性,或者beers数组中有另一个对象不是Beer类的实例。