Является ли NSData подстрокой другого NSData? - PullRequest
0 голосов
/ 11 августа 2011

У меня есть два NSData объекта

NSData *toScan = /* initialized somehow with "Hello, this world." */;
NSData *toMatch = /* initialized somehow with "this" */;

Каков наилучший способ узнать, что toMatch байты являются подмножеством toScan байтов? Я использую C-функции для этой цели на данный момент: что-то вроде этого

strstr([[toScan identifier] bytes], [[toMatch identifier] bytes]);
// returned bytes are null-terminated

но я думаю, что не самый лучший способ использовать C-функции в объектно-ориентированной среде ...

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

В Snow Leopard и iOS 4.0 NSData имеет -rangeOfData:options:range:, который должен делать то, что вы хотите.

Это также чертовски быстро.

0 голосов
/ 11 августа 2011

В другом вопросе я написал ответ, содержащий категорию NSData с методом rangeOfData::

Элегантный алгоритм разбора потока данных на запись

Это сделает то, что вы ищете.

...