从NSMutableArray添加和提取结构

时间:2011-04-18 14:52:03

标签: iphone struct nsarray

  

可能重复:
  What’s the best way to put a c-struct in an NSArray?

我需要创建一个结构数组,例如:

typedef struct
{
    int fill;
    BOOL busy;
} MapCellST;

如何在NSMutableArray中添加此结构的实例,以及如何提取结构的副本并在以后使用其属性?

3 个答案:

答案 0 :(得分:13)

将结构包装在NSValue

MapCellSt x;
NSValue* value = [NSValue value:&x withObjCType:@encode(MapCellSt)];

稍后提取它:

[value getValue:&x];

答案 1 :(得分:0)

使用NSMutableDictionary而不是NSMutableArray

typedef struct {...} MyStruct;

NSMutableString* myKey = [NSMutableString stringWithString:@"MyKey"];
NSValue *myStructPtr = [NSValue value:&myStruct withObjCType:@encode( MyStruct )];
[myMutableDictionary setObject:myStructPtr forKey:myKey];

答案 2 :(得分:-2)

雅不能。

只有真正的Obj-C对象可以直接添加到NSMutableArray和朋友;为了做你正在描述的内容,你必须创建一个具有你想要使用的结构属性的类。

编辑:正如Tamás所说,你也可以使用NSValue;但很有可能为MapCell创建一个类是一个更好的主意。