Ios 目标C中NSString损坏或编码问题
请参阅下面的代码:Ios 目标C中NSString损坏或编码问题,ios,objective-c,encoding,nsstring,nsstringencoding,Ios,Objective C,Encoding,Nsstring,Nsstringencoding,请参阅下面的代码: + (void)splashDataFromJSON:(NSData *)objectNotation error:(NSError **)error { NSError *localError = nil; NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:objectNotation options:0 error:&localError]; if (
+ (void)splashDataFromJSON:(NSData *)objectNotation error:(NSError **)error
{
NSError *localError = nil;
NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:objectNotation options:0 error:&localError];
if (localError != nil) {
*error = localError;
}
NSMutableArray* btms = [[NSMutableArray alloc] init];
NSMutableDictionary* btmManufacturerResolutionDictionary = [[BTMCache sharedManager] btmManufacturerResolutionDictionary];
NSArray *results = [parsedObject valueForKey:@"results"];
NSLog(@"Count %d", parsedObject.count);
NSString* imageBaseUrl = [[parsedObject valueForKey:@"general"] valueForKey:@"image_base_url"];
imageBaseUrl = [imageBaseUrl stringByAppendingString:@"hdpi/"];
NSString* splashImageName = [[[parsedObject valueForKey:@"general"] valueForKey:@"splash"] valueForKey:@"img"];
NSString* splashAdvertiserURL = [[[[parsedObject valueForKey:@"general"] valueForKey:@"splash"] valueForKey:@"url"] copy];
NSMutableString* appendedString = [[NSMutableString alloc] init];
for(int i =0 ;i<[splashAdvertiserURL length]; i++) {
char character = [splashAdvertiserURL characterAtIndex:i];
printf(&character);
sleep(0.1);
if (character != "!")
{
[appendedString appendFormat:@"%c", character];
}
}
[[SplashData sharedManager] setSplashAdvertiserURL:appendedString];
[[SplashData sharedManager] setSplashImageName:splashImageName];
splashAdvertiserURL = [[SplashData sharedManager] splashAdvertiserURL];
}
如您所见,我进一步将NSString放入具有NSString属性的单例中。这里没有什么异常。然后我继续检索它,以确保一切正常。除此之外,该计划还在继续。在另一个类中,我希望检索这些信息,当我尝试这样做时,它抛出EXC_BAD_访问。里面好像有垃圾
然后,我在代码中加入一个循环,正如您所看到的那样,一次打印一个字符。很奇怪,当我用po打印出来时,我得到:
https://
r
a
d
ar com/ref/go/8 4/"
正是这种格式。如果我继续硬编码字符串https://radar.com/ref/go/84/ -包括转义字符和所有内容,所有都可以正常工作。没有问题。如果我处理没有转义字符的正常字符串,它也可以在单例中正常存储,没有问题。在此处输入代码
我在这里很困惑到底发生了什么事。有人能帮忙吗
感谢您将您收到的URL作为字符串,在将其用于应用程序之前需要对其进行编码。请查看以下代码:
NSString *sampleUrl = @"https:\/\/radar.com\/ref\/go\/84\/";
NSString *encodedUrl = [sampleUrl stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];
谢谢你的评论。我以前尝试过这个,现在再次检查。同样的问题。是否需要使用其他编码?请尝试人类可读的URL字符串,如
NSString*sampleUrl=@”https://radar.com/ref/go/84/“;
不应该是字符!='!”
?(比较字符的单引号)?如果您将objectNotation
转换为NSString
(alloc
/initWithData:encoding:
,使用UTF8),它是否有`````?抱歉,该代码已被删除,而且几乎不相关。我正忙于处理它。
NSString *sampleUrl = @"https:\/\/radar.com\/ref\/go\/84\/";
NSString *encodedUrl = [sampleUrl stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];