我应该创建一个类而不是结构,以便我可以将数据放入NSArray中吗?

时间:2012-10-17 02:02:15

标签: objective-c struct nsarray

是否可以为Objective-C创建类似C struct的内容?我需要能够在NSArray中使用它,因此它不能是传统的struct。现在我宣布全班只是为了完成这个,我想知道是否有更简单的方法。

我现在有什么:

@interface TextureFile : NSObject
@property NSString *name;
@property GLKTextureInfo *info;
@end

@implementation TextureFile
@synthesize name = _name;
@synthesize info = _info;
@end

NSMutableArray *textures;

我想做什么:

typedef struct {
    NSString *name;
    GLKTextureInfo *info;
} TextureFile;

NSMutable array *textures;

1 个答案:

答案 0 :(得分:1)

这取决于您使用的是哪种数据,您在问题中使用的示例对于结构来说似乎没问题。

如果你需要在需要一个对象的NSArray中存储一个C结构,你可以将C结构转换为NSValue并将其存储起来,然后转换回它的C读取时的结构类型。

检查Apple Documentation

鉴于此结构:

typedef struct {
    NSString *name;
    GLKTextureInfo *info;
} TextureFile;

存储它:

TextureFile myStruct;
// set your stuct values

NSValue *anObj = [NSValue value:&myStruct withObjCType:@encode(TextureFile)];
NSArray *array = [NSArray arrayWithObjects:anObj, nil];

再次阅读:

NSValue *anObj = [array objectAtIndex:0];
TextureFile myStruct;
[anObj getValue:&myStruct];