objective-c - 在 Objective-C 的对象数组中访问对象及其属性

标签 objective-c arrays object

我是 Objective-C 的新编码,我正在尝试弄清楚如何执行以下操作:

我有一个类 Company:

@interface Company : NSObject

@property (strong, nonatomic)NSString *companyID;

@property (strong, nonatomic)NSString *companyName;

@end

我正在从服务器获取字典并解析对象。 之后,我将这些对象添加到一个数组中(它正在工作 - 这里没问题 - 我得到了 JSON)。

NSMutableDictionary *companyDictionary = [[NSMutableDictionary alloc]initWithDictionary:response];

NSArray *companyArray = [companyDictionary valueForKey:@"data"];
NSMutableArray *companyInformationArray = [NSMutableArray new];

//Parser
for (int i = 0; i < [companyArray count]; i++) {
    Company *company = [Company new];
    company.companyID = [[companyArray objectAtIndex:i] valueForKey:@"company_id"];
    company.companyName = [[companyArray objectAtIndex:i] valueForKey:@"name"];

    [companyInformationArray addObject:company];
}

问题是:我需要访问对象及其内部的字段

companyInformationArray

我只是想做一些类似的事情(这两种方法当然行不通):

Company *company = [Company new];
company = [[companyInformationArray objectAtIndex:0] valueForKey:@"name"];

或者:

Company *company = [Company new];
company.companyName = [[companyInformationArray objectAtIndex:0] companyName];

你能帮帮我吗?

谢谢!

最佳答案

Objective-C 现在支持轻量级泛型。例如,您可以指定您的数组是 Company 对象的数组,而不是简单的 NSMutableArray:

NSMutableArray <Company *> *companyInformationArray;

然后你可以这样做:

NSString *nameOfSecondCompany = companyInformationArray[1].companyName;

这样做的优点是,如果您尝试添加不是 Company 的内容,编译器会警告您,同样您喜欢无需任何强制转换的强类型属性。

关于objective-c - 在 Objective-C 的对象数组中访问对象及其属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44728477/

相关文章:

java - 测验 - 我如何提出保存在数组中的问题,以便使用方法中的循环来回答?

python - 超出范围的对象 Python

c++ - "sizeof"一个类或对象可以为零吗?

ios - UICollectionView 在 iOS 11 上覆盖全屏

iphone - 我想设置一个任意键 :value property on a UIView

ios - 用于检测 javascript 调用函数的正则表达式

javascript - 在不知道深度的情况下移除另一个对象内的对象

ios - 尝试使用自定义布局进行屏幕外 UICollectionViewCells 预渲染

java - 将数组中的元素以一定的间隔增加一定的量。 java

arrays - 在其类型签名中指定数组的长度