我有一个带有类文件的相当大的NSMutableArray。该数组有多个属性,如:
[Element elementsName:@"Lithium" elementsNumber:@"3"],
[Element elementsName:@"Beryllium" elementsNumber:@"4"],
[Element elementsName:@"Boron" elementsNumber:@"5"],
[Element elementsName:@"Carbon" elementsNumber:@"6"],
[Element elementsName:@"Nitrogen" elementsNumber:@"7"],
[Element elementsName:@"Oxygen" elementsNumber:@"8"],
[Element elementsName:@"Fluorine" elementsNumber:@"9"],
[Element elementsName:@"Neon" elementsNumber:@"10"],
我需要能够分别访问elementsName和elementsNumber。
有人知道怎么做,有可能吗?谢谢! (下面有更多代码!)
Element.h(数组的类)
@interface Element : NSObject
{
NSString *name;
NSString *number;
}
@property(nonatomic, copy)NSString *name;
@property(nonatomic, copy)NSString *number;
+(id)elementsName:(NSString *)name elementsNumber:(NSString *)number;
和Element.m
#import "Element.h"
@implementation Element;
@synthesize number;
@synthesize name;
+(id)elementsName:(NSString *)name elementsNumber:(NSString *)number
{
Element *newElement = [[self alloc] init];
newElement.name = name;
newElement.number = number;
return newElement;
}
@end
答案 0 :(得分:1)
您可以尝试这样的事情:
for(int i = 0; i<elementArray.count; i++)
{
NSString *name = ((Element*)[elementArray objectAtIndex:i]).name;
NSString *number = ((Element*)[elementArray objectAtIndex:i]).number;
}
答案 1 :(得分:0)
这是你在找什么? :
// returns an array of all numbers
NSArray *numbers = [elementArray valueForKey:@"number"];
// returns an array of all names
NSArray *names = [elementArray valueForKey:@"name"];
这称为KVC(键值编码),它使用字符串来访问对象的属性。此示例遍历数组中的所有元素并询问其number
或name
属性,然后将结果作为数组返回。
这也可以通过for循环实现。我主要包括这个,让你知道发生了什么:
NSMutableArray *names = [NSMutableArray array];
NSMutableArray *numbers = [NSMutableArray array];
for (Element *e in elementsArray) {
[names addObject:e.name];
[numbers addObject:e.number];
}
显然这也可行,但为什么不在为此设计时使用valueForKey:
?
答案 2 :(得分:0)
您可以改用NSDictionary。
NSArray *arrOfDic=@[@{@"elementsName":@"Lithium",@"elementsNumber":@"3"},
@{@"elementsName":@"Beryllium",@"elementsNumber":@"4"},
@{@"elementsName":@"Boron",@"elementsNumber":@"5"},
@{@"elementsName":@"Carbon",@"elementsNumber":@"6"},
@{@"elementsName":@"Nitrogen",@"elementsNumber":@"7"}];
NSLog(@"dic is %@",arrOfDic);
获取您的元素及其编号
NSLog(@"FirstObject is Element = %@ Element No = %@",arrOfDic[0][@"elementsName"],arrOfDic[0][@"elementsNumber"]);
NSLog(@"SecondObject is Element = %@ Element No = %@",arrOfDic[1][@"elementsName"],arrOfDic[1][@"elementsNumber"]);
你的文件出了什么问题,它工作正常。
NSMutableArray *mArray=[[NSMutableArray alloc] init];
[mArray addObject:[Element elementsName:@"Lithium" elementsNumber:@"3"]];
[mArray addObject:[Element elementsName:@"Beryllium" elementsNumber:@"5"]];
[mArray addObject:[Element elementsName:@"Boron" elementsNumber:@"6"]];
Element *element=(Element*)[mArray objectAtIndex:0];
NSLog(@"My first element is name = %@ ,number = %@",element.name,element.number);
输出---
我的第一个元素是name = Lithium,number = 3