我有一个奇怪的文本编码问题,我无法弄清楚。奇怪的是,如果您在浏览器中从 API 提要在线查看文本,则文本不需要任何格式。
这是我的代码:
-(void) viewDidLoad {
[super viewDidLoad];
NSString *jsonDealString = [NSString stringWithFormat:@"http://api.*****"];
NSLog(@"deal id is %@",dealId);
// Download the JSON
NSString *jsonString = [NSString
stringWithContentsOfURL:[NSURL URLWithString:jsonDealString]
encoding:NSStringEncodingConversionAllowLossy|NSUTF8StringEncoding
error:nil];
// Create parser for the api
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *results = [parser objectWithString:jsonString error:nil];
[self setDisplayItems:[results objectForKey:@"results"]];
NSDictionary *item = (NSDictionary *)[displayItems objectAtIndex:0];
self.titleDeal.text = [item objectForKey:@"title"];
}
我能够使用以下方法纠正文本编码问题:
// merchant name with encoding fix
NSString *correctStringTitleDeal = [NSString stringWithCString:[[[item objectForKey:@"merchant"] objectForKey:@"name"] cStringUsingEncoding:NSISOLatin1StringEncoding] encoding:NSUTF8StringEncoding];
self.titleDeal.text = correctStringTitleDeal;
但是当遇到 Null 对象时会导致崩溃。
我的崩溃日志输出状态:
* 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'* +[NSString stringWithCString:encoding:]: NULL cString'
这是表格视图中出现的问题的屏幕截图(它也发生在应用程序的其他地方):
谢谢你的帮助