Подтвердить что ты не робот

Cocoa structs и NSMutableArray

У меня есть NSMutableArray, который я пытаюсь сохранить и получить доступ к некоторым структурам. Как мне это сделать? 'addObject' дает мне ошибку, говорящий "Несовместимый тип для аргумента 1 addObject". Вот пример ('in' - это NSFileHandle, 'array' - это NSMutableArray):

//Write points
for(int i=0; i<5; i++) {
    struct Point p;
    buff = [in readDataOfLength:1];
    [buff getBytes:&(p.x) length:sizeof(p.x)];
    [array addObject:p];
}

//Read points
for(int i=0; i<5; i++) {
    struct Point p = [array objectAtIndex:i];
    NSLog(@"%i", p.x);
}
4b9b3361

Ответ 2

Вы получаете ошибки, потому что NSMutableArray может принимать ссылки только на объекты, поэтому вы должны обернуть ваши структуры в класс:

@interface PointClass {
     struct Point p;
}

@property (nonatomic, assign) struct Point p;

Таким образом, вы можете передать экземпляры PointClass.

Изменить. Как упоминалось выше и ниже, NSValue уже предоставляет это более общий путь, поэтому вы должны пойти с этим.

Ответ 3

Вы можете использовать NSValue, или в некоторых случаях может иметь смысл использовать словарь вместо структуры.