1

NSInputStream *inputStreamネットワーク接続から小さな JSON オブジェクトを受信して​​います。次のようにストリームをバッファに読み取った場合:

NSError *err = nil;
uint8_t buffer[1024];
NSMutableData *data = [[NSMutableData alloc] init];
while ([inputStream hasBytesAvailable]) {
    int const len = [inputStream read:buffer maxLength:sizeof(buffer)];
    if (0 < len) {
        [data appendBytes:buffer length:len];
    }
}
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];

次に、期待する JSON を取得します。しかし、これは、読み取る JSON オブジェクトが 1 つだけあると想定しているため、非常に脆弱です。このスキームでは、 をデシリアライズしようとしてしまう可能性が{"cheese":17}{"chありますが、これは明らかに無効です。むしろ使いたい

NSError *err = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithStream:inputStream options:0 error:&err];

しかし、デバッガーを使用して、この最後の行が返されず、エラーがログに記録されないことを発見しました! 正しいアプローチは何ですか?

4

0 に答える 0