繁体   English   中英

无法在iOS中编码数据

[英]Cannot encode the data in ios

无法在从Web服务获取的ios中对数据进行编码。

- (NSData*)encodeDictionary:(NSDictionary*)dictionary {
    NSMutableArray *parts = [[NSMutableArray alloc] init];
    for (NSString *key in dictionary) {
        NSString *encodedValue = [[NSString stringWithFormat:@"%@",[dictionary objectForKey:key]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSString *encodedKey = [[NSString stringWithFormat:@"%@",key] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
        [parts addObject:part];
    }
    NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
    return [encodedDictionary dataUsingEncoding:NSUTF8StringEncoding];
}

看来您正在编码NSDictionary并生成一个NSString。 然后再次编码该NSString并返回它。

您可以按照以下简单方法进行操作。

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayToOutput 
                    options:NSJSONWritingPrettyPrinted 
                    error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}

您可以在函数中返回jsonData以上,以实现如下要求。

- (NSData*)encodeDictionary:(NSDictionary*)dictionary {
    NSError *error; 
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary 
                    options:NSJSONWritingPrettyPrinted 
                    error:&error];
    if (! jsonData) {
      NSLog(@"Got an error: %@", error);
    } else {
      return jsonData;
  } 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM