0

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

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

然后经过一些工作,我想使用以下代码在 myuitextview 中显示结果 pAr:

Myuitextview.text = [NSString stringWithUTF8string:pAr];

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

stringwithutf8string 之后为 null 的原因是什么?据我了解 Unsigned char * 和 const char* 是安全的演员吗?

4

2 回答 2

1

你不能那么容易地将 unsigned char 转移到 NSString

试试这个

NSString* s = [[NSString alloc] initWithBytes:pAr length:sizeof(pAr) encoding:NSASCIIStringEncoding];
于 2013-09-08T19:13:16.943 回答
0

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

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

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

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

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

于 2013-09-08T19:29:19.990 回答