Веб-служба, вероятно, завершает все строки с CRLF
, т.е. "\r\n"
. Вы находитесь в системе UNIX, поэтому символ перевода строки '\n'
берется в качестве разделителя строк; возврат каретки '\r'
оставлен как часть предыдущей строки. При печати он будет иметь тот же эффект, что и '\n'
. Вы убедились (используя, скажем, strvis
), что конечный символ строки равен '\n'
, а не '\r'
?
-[NSString hasSuffix:]
будет перехватывать только указанный вами символ новой строки. Чтобы проверить, заканчивается ли строка новой строкой или пробелом, вот метод предполагаемой категории:
- (BOOL)my_hasWhitespaceOrNewlineSuffix {
NSRange r = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
options:NSBackwardsSearch];
BOOL foundChar = r.location != NSNotFound;
BOOL isLineFinal = foundChar && (r.location + r.length == [self length]);
return isLineFinal;
}
Вы можете использовать предложение phunehehe о text = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]
, чтобы удалить любые пробелы или новые строки в конце строки.