如何将NSArray转换为目标c中的NSString?

问题描述:

我有一些创建字符串的java服务器端代码(例如Hello world),然后将此字符串转换为字节数组,最后发送给iOs客户端。如何将NSArray转换为目标c中的NSString?

我的iOs客户端使用NSStream来读取数据并获取数组。 现在我想从数组中获取原始字符串。

我该怎么做?

我试图将数组转换为NSData,然后到NSString,但它失败。 我也尝试将数组转换为字符串,但它似乎将数组中的数字转换为字符串数字而不是我期望的字符串'Hello world'。

+2

什么是数据样子的?请发布您已经尝试过的代码。 – ZeMoon

+1

'我的ios客户端使用NSStream来读取数据,并获得数组,如果您发布字节,您应该得到'NSData'。 –

+0

服务器响应pong消息json格式:{“type”:“PONG”,“content”:[52,55,56,55,55,51,48,51,53]},当然这个json会转换为字节数组发送到ios客户端。使用代码:uint8_t dataArr [len]; [_inputStream read:dataArr maxLength:len]; NSData * data = [NSData dataWithBytes:dataArr length:len];获取数据,并使用json serialize来获取类型是'PONG',而内容是一个数组。现在我想将数组转换为一个字符串。 – fcbflying

您应该将您的JSON更改为这样:{"type":"PONG","content":"478773035"]}

然而,这样的事情可能会工作:

uint8_t * const buffer = (uint8_t*)calloc(1, [ bytes count ] + 1) 
assert(buffer) ; 

size_t index = 0 ; 
for (NSNumber * byteNumber in bytes) 
{ 
    buffer[ index ] = (uint8_t)[ byteNumber unsignedCharValue ] ; 
    ++index; 
} 

NSString * const string = [ NSString stringWithUTF8String:buffer ]; 

free((void*)buffer); 
+0

你的'字节'的类型是什么?我使用[字典objectForKey:@“content”]得到的值是NSArray。 – fcbflying

+0

它是'NSArray *'。但是,再次,为什么把你的字符串作为字节数组与字符串? – nielsbot

+0

服务器已运行了很长时间,web浏览器和android客户端工作正常,我只是做ios客户端开发,所以我必须遵循服务器规则。 – fcbflying