使用Objective-c中每个项的属性创建数组

时间:2012-11-25 10:39:37

标签: objective-c arrays properties nsmutablearray

请告诉我,如何创建一个数组,其中每个元素都有许多属性。例如:

array:
  |
  |-item 1 ( property_1-"Name1", property_2-"LastName1", property_3-"Age1");
  |-item 2 ( property_1-"Name2", property_2-"LastName2", property_3-"Age2");
  |-item 3 ( property_1-"Name3", property_2-"LastName1", property_3-"Age2");
  |-…

在这种情况下,数组的不同元素可以具有同一个属性,例如在上面发布的代码中 - “第3项”具有“属性2 “与”第1项“相同,”属性3 “与”第2项“相同

请告诉我,如何做到最好,如果不是很困难,请写一个简单的示例或链接到一些教程。

提前谢谢)

2 个答案:

答案 0 :(得分:2)

我建议使用两种方法:

<强> 1。使用类来存储所有属性

以下是一个例子:

@interface Wrapper : NSObject

@property (nonatomic, assign) NSString* property_1;
@property (nonatomic, assign) NSString* property_2;
@property (nonatomic, assign) NSString* property_3;

@end

然后你可以将它用作字典:

NSString* value=[myWrapperInstance valueForKey: @"property_1"];

但是这里有另一种解决方案:

<强> 1。使用NSDictionary存储所有属性

NSDictionary* dict= @{ @"property_1" : @"Name1" ,@"property_2" : @"Name2",  @"property_3" : @"Name3" };

然后解决方案很简单:

NSMutableArray* objects=[NSMutableArray new];
for(int i=0; i<N; i++)
{
    NSDictionary* dict= @{ @"property_1" : @"Name1" ,@"property_2" : @"Name2",  @"property_3" : @"Name3" };
    [objects addObject: dict];
}

答案 1 :(得分:1)

听起来你想要NSArrayNSDictionary个对象:

NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"Name1", @"property_1", @"LastName1", @"property_2", @"Age1", @"property_3", nil);
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"Name2", @"property_1", @"LastName2", @"property_2", @"Age2", @"property_3", nil);
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"Name3", @"property_1", @"LastName3", @"property_2", @"Age3", @"property_3", nil);

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

如果您想稍后更新,则应分别使用NSMutableDictionaryNSMutableArray

如果您使用ARC,则在完成对象时需要release个对象。