#objective-c #ios #nsstring
#objective-c #iOS #nsstring
Вопрос:
Я пытаюсь достичь конца, как закодировано в этом псевдокоде:
NSString *login;
NSString *pass;
<snip>
NSString *loginString = [NSString stringWithFormat:@"00%@00%@", login, pass];
… и, как вы можете себе представить, я получаю предупреждение: «Литерал CFString содержит символ NUL».
Я полностью понимаю почему. Я вставил нулевой символ в свою строку. В чем мне нужна помощь, так это в том, как достичь этой цели с помощью правильного кода Obj-C. Любопытно, что код как есть на самом деле работает, но я знаю, что это проблема, ожидающая появления этого предупреждения.
Примечание — длина символов «login» и «pass» заранее неизвестна, в разное время может отличаться. Таким образом, это устраняет какое-то статическое решение. Спасибо.
Ответ №1:
Я не знаю, зачем вам нужны эти нули, но если вам нужно только связать пароль с пользователем, просто используйте NSString *loginString = [NSString stringWithFormat:@"%@%@", login, pass];
Комментарии:
1. Рубен, спасибо тебе. Я также ранее пробовал ваше предложение, но, как вы согласитесь, это предложение устраняет требуемые нули в строке. Они должны быть там. Речь идет не о том, зачем они мне нужны, а о том, как я это делаю, а затем о том, как достичь цели псевдокода, который их использует. Предложения и справка по-прежнему открыты и приветствуются по этой нерешенной проблеме.
Ответ №2:
Вы могли бы попробовать это:
unsigned short nullChar[] = {0};
NSString *nullCharSeparator = [[NSString alloc] initWithBytes:nullChar length:sizeof(nullChar) encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF16LE)];
(взято из http://www.cocoabuilder.com/archive/cocoa/174917-nul-characters-in-nsstring-cause-unexpected-results.html )
Тогда что-то вроде этого:
NSString *loginAndNull = [login stringByAppendingString:nullCharSeparator];
NSString *loginAndPass = [loginAndNull stringByAppendingString:password];
Комментарии:
1. это выглядит интересным решением. Я только что решил «принять» сообщение с предупреждением, но это лучше. Я попробую это и вернусь. Спасибо за время.