向NSMutableArray中添加和提取结构体

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

可能是重复问题:
最佳方法是将C结构放入NSArray中?

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

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

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

3个回答

13

将这个结构体放在一个NSValue里面:

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

稍后提取:

[value getValue:&x];

我尝试了这个解决方案,但是它出现了一个错误访问的问题。 - Khalid Taha

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

不行。

只有真正的 Obj-C 对象可以直接添加到 NSMutableArray 等中;为了实现你所描述的功能,你需要创建一个具有你想要使用的结构体属性的类。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接