无法对 ios 中的数据进行编码

Cannot encode the data in ios

无法对从网络服务获取的 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 并 returns 它。

您可以按照下面的简单方法完成。

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];
}

您可以在您的函数中 return 以上 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;
  } 
}