Как мне показать Invisibles в окне вывода GDB в Xcode 4? - PullRequest
1 голос
/ 09 мая 2011

Я только что обнаружил ошибку равенства строк из-за несоответствия длины строки.Дополнительный символ был '\ r', который вообще не отображается в окне вывода в Xcode 4.Если бы это было так, мне не пришлось бы тратить почти столько же времени, сколько на отслеживание проблемы.

Можно ли отображать пробельные символы в окне вывода?Если да, то какое магическое заклинание я должен повторить, чтобы включить его?

Я пытался показать невидимые в меню редактора, но это работало только для редакторов кода, но не для окна вывода.Я использую Xcode 4 в приложении для iOS.

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Сейчас я могу придумать только одно решение: создать категорию:

NSString + myAdditions.h

@interface NSString (myAdditions) 

- (NSString *)showInvisibles;

@end

NSString + myAdditions.m

#import "NSString+myAdditions.h"

@implementation NSString (myAdditions)

- (NSString *)showInvisibles
{
    NSString *regexToReplaceWhitespaces = @"([\\s])";   

    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexToReplaceWhitespaces
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];

    NSString *result = [regex stringByReplacingMatchesInString:self
                                                       options:0
                                                         range:NSMakeRange(0, [self length])
                                                  withTemplate:@"␣"];

    return result;
}

@end

Использование

NSLog(@"show me the unseen: %@", [@"soo      many    whitespace in here  \t\t <- look two tabs!" showInvisibles]);

выход

soo␣␣␣␣␣␣many␣␣␣␣whitespace␣in␣here␣␣␣␣␣<-␣look␣two␣tabs!
0 голосов
/ 09 мая 2011

Вы могли бы избежать процентов вашей строки. Вы можете указать, какие символы не экранировать в третьем параметре (я включил все общие), остальные из которых будут экранированы:

NSLog(@"%@", CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)yourString, (CFStringRef)@" <>#%{}|\^~[]`;/?:@=&$", NULL, kCFStringEncodingUTF8);
...