Search code examples
iphonestructnsmutablearraynsvalue

How to wrap a Struct into NSObject


this is supposed to be trivial… I think, but I can't find a way how to wrap a Struct variable into an NSObject. Is there a method to do so? If not, how would I go about adding a struct into an NSMutableArray?

Thanks.


Solution

  • Hm, try to look at the NSValue at https://developer.apple.com/documentation/foundation/nsvalue

    You can use it like

    struct aStruct
    {
        int a;
        int b;
    };
    typedef struct aStruct aStruct;
    

    Then sort of "wrap" it to an NSValue object like:

    aStruct struct; struct.a = 0; struct.b = 0;
    NSValue *anObj = [NSValue value:&struct withObjCType:@encode(aStruct)];
    NSArray *array = @[anObj];
    

    To pull the struct out from NSValue use:

    NSValue *anObj = [array firstObject];
    aStruct struct;
    [anObj getValue:&struct];
    

    I guess later on, you can have a category from NSValue to make that better =D