Примечание: в других вопросах они сравнивают значение, хранящееся в объектах NSData, а не в байтах.Сравните NSData с последовательностью байтов?
Я хочу, чтобы выполнить что-то вроде этого:
NSData *d = ...;
if (d == "fff1") {
...
}
Единственное решение, которое я нашел:
NSData *d = ...;
NSString *str = [NSString withFormat:@"%@", d];
if ([str isEqualToString:@"<fff1>"] {
...
}
Но мне не нравится, что мне нужно добавить дополнительные окружающие backets в сравнении. Есть ли лучшие решения?
Оба эти способы не работают , – user3798020
Ну, проблема, скорее всего, в том, как вы представляете данные «fff1». Попробуйте выполнить регистрацию [NSData dataWithBytes: "fff1" length: sizeof ("fff1")] и посмотреть, что произойдет. Эти значения символов не имеют ничего общего с тем, что вы сравниваете, как я вижу. Просто удача, почему ваш метод работает, заключается в том, что для метода NSData определен метод описания. Если яблоко изменит этот метод, ваш код перестанет работать. –
Посмотрите на это сообщение: http://stackoverflow.com/questions/7317860/converting-hex-nsstring-to-nsdata –