理解できない奇妙なテキストエンコーディングの問題があります。奇妙なことに、ブラウザの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'
これは、テーブルビューで発生している問題のスクリーンショットです(アプリの他の場所でも発生しています)。
助けてくれてありがとう