stringWithUTF8string返回null

时间:2013-09-08 18:59:39

标签: ios utf-8

我试图解决我的问题一个星期,唯一的希望是你! 我通过uitextview从用户那里收到一个字符串,并使用下一个代码进行投射:

unsigned char* pAr = [myuitextview.text UTF8string];

然后经过一些工作后,我想使用此代码在myuitextview中显示生成的pAr:

Myuitextview.text = [NSString stringWithUTF8string:pAr];

结果我看到空白的myuitextview。 经过调查后我发现,stringWithUtf8string返回nil,但我在utf8中收到它并使用utf8创建。 然后我发现了UTF8string 也返回零。 另外我发现当我使用unsigned char *而不是utf8string方法返回的const char *时会发生这种情况。当我收到const char *它返回一个c字符串,但如果我尝试unsigned char *它返回nil。

stringwithutf8string之后null的原因是什么?据我所知,Unsigned char *和const char *是安全演员吗?

2 个答案:

答案 0 :(得分:1)

你不能轻易地将unsigned char转移到NSString

试试这个

NSString* s = [[NSString alloc] initWithBytes:pAr length:sizeof(pAr) encoding:NSASCIIStringEncoding];

答案 1 :(得分:0)

NSString有一个方法“UTF8String”(注意使用大写字母“)

我没有看到方法“utf8string”(全部小写)。这种方法来自哪里? (Objective-C方法名称区分大小写,因此它们是不同的方法名称。)

另外,请注意在UTF8String的文档中说:

返回的C字符串是指向字符串对象内部结构的指针,该结构的生命周期可能短于字符串对象,并且肯定不会有更长的生命周期。因此,如果需要将C字符串存储在您调用此方法的内存上下文之外,则应复制该字符串。

如果您使用该方法,您需要确保文本字段粘在一起,并且不要更改它的字符串内容,否则从UTF8String方法返回的指针将变为无效。