我需要创建一个结构数组,例如:
typedef struct
{
int fill;
BOOL busy;
} MapCellST;
如何在NSMutableArray中添加此结构的实例,以及如何提取结构的副本并在以后使用其属性?
答案 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创建一个类是一个更好的主意。