NSNumber и NSData - PullRequest
       7

NSNumber и NSData

0 голосов
/ 16 сентября 2018

Я пытаюсь изучить основы Obj C из "Learning Objective C 2.0 Роберта Клера"

У меня есть массив объектов NSNumber, которые я записываю Array в буфер объектов NSData. Я хотел бы проверить правильность написания объектов NSNumber, используя что-то вроде NSLog, но я просто получаю мусор, когда пытаюсь это сделать.

Вот мой код:

    int howManyBytes3 = 100;
    NSMutableArray *myArray3 = [NSMutableArray array]; //Creates an empty NSArray
    for (NSInteger i=0; i<50; i++)
    {
        [myArray3 addObject:[NSNumber numberWithInteger:i]];
    }

    NSLog(@"My Array 3 contains : %@", myArray3);


    NSMutableData  *myData3 = [NSMutableData dataWithBytesNoCopy:myArray3 length:howManyBytes3 freeWhenDone:NO];
    NSLog(@"myData3 contains : %@", myData3);

и это вывод, который я получаю на консоли:

2018-09-16 13:24:39.396705+0100     Chapter9[12351:1341392] myData3 contains :   <917f30a8 ffff1d00 00000000 00000000 30186200 

01000000 00000000 44000000 33000000 32000000 00000000 00000000 00000000 00000000 01050610 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6ad3364c> Программа завершена с кодом выхода: 0

Что я делаю не так?

1 Ответ

0 голосов
/ 16 сентября 2018

NSMutableArray это не массив C, это ссылка на объект. Вы пытаетесь распечатать внутренний байтовый макет NSObject.

Для этого

1) Вам необходим механизм сериализации объектов - например, NSKeyedArchiver

2) Требуется преобразование байтов в символы => Как отобразить шестнадцатеричные байты с помощью NSLog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...