OC直接打印数组,数组元素显示中文的问题

这篇博客探讨了在Objective-C(OC)中如何正确打印包含中文元素的数组。当试图直接打印包含Person对象的数组时,只会显示对象的内存地址。为了解决这个问题,博主建议重写description方法来返回期望的字符串。然而,即使重写description方法,依然可能出现乱码。最终解决方案是重写descriptionWithLocale:方法,确保在遍历数组时正确显示中文内容。
摘要由CSDN通过智能技术生成

这里我们假设有一个OC数组,然后里面放了一个Person类对象p1,然后我们希望通过直接打印数组,得到数组里元素的相关信息。

  1. Person *p1 = [[Person alloc init];
  •        NSArray*array1 =@[p1];
  •        for (id s inarray1) {
  •          NSLog(@"%@",s);
  •        }


如果直接像上面那样写的话,我们会得到类对象的内存地址(打印一个对象:NSLog(@"%@", stu);默认情况下打印的时对象的名字和内存地址)

[size=16.3636360168457px]显示这不是我们想要的结果,所以我们会重写Person的description方法

  1. - (NSString*)description  {
  •     return [NSStringstringWithFormat:@"我是一个人"];
  • }


然后我们再次执行程序,你会发现程序一样没有得到我们想要的结果,出现乱码非中文了。

  1. "\U6211\U662f\U4e00\U4e2a\U4eba"


上面的东西貌似是文字的unicode编码。

等,我们先再回顾一下思路,虽然这很简单。

打印数组,用NSLog%@"&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值