iOS如何在xCode中打印相当于“查看内存*”的内容?

时间:2014-10-08 14:53:44

标签: ios objective-c xcode nsstring nsdata

我试图打印出发行人" iOS中的钥匙串项目提供的数据。我似乎无法找到正确的编码或了解这些数据的存储方式。

当我选择w"查看*"在xCode中的选项,我看到我在垃圾中看到了一些文字。 我试图了解如何打印内存指针正在处理的文本和垃圾。下面是我尝试做的事情的截图

enter image description here

enter image description here

我试过这些,但我得到的是nil字符串,或者是UTF16的日本字符

        id data = [innerObject objectForKey:@"issr"];

        NSString* string8 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSString* string16 = [[NSString alloc] initWithData:data encoding:NSUTF16StringEncoding];
        NSString* string16be = [[NSString alloc] initWithData:data encoding:NSUTF16BigEndianStringEncoding];
        NSString* string16le = [[NSString alloc] initWithData:data encoding:NSUTF16LittleEndianStringEncoding];
        NSString* string32 = [[NSString alloc] initWithData:data encoding:NSUTF32StringEncoding];

        NSString* string8Bytes = [[NSString alloc]initWithBytes:&data length:[data length] encoding:NSUTF8StringEncoding];
//NSLog the result

1 个答案:

答案 0 :(得分:0)

查看内存转储,您可以选择字母,它将突出显示相应的内存字节。每个字母有2个字节,这让我意识到它使用的是Ascii编码,下面的代码可以工作:

              @try {

                if([data isKindOfClass:[NSData class]]==NO)
                {
                    continue;
                }
                NSString* stringAscii = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];


                NSCharacterSet* alphaNumeric = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.@"];


                NSCharacterSet *doNotWant = [alphaNumeric invertedSet];
                NSString* cleanedUpString = [[stringAscii componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @" "];

                if(cleanedUpString.length>0)
                {
                    DLog(@" %@ Cleaned up: %@",key,cleanedUpString);
                }
            }
            @catch (NSException *exception) {

            }
            @finally {

            }