Xcode控制台输出中文

本文提供了一种在控制台输出中文的方法,通过在.m文件中加入特定代码,实现了NSSet、NSDictionry和NSArray类型数据的中文显示。适用于Objective-C开发者解决控制台中文乱码问题。

创建一个.m文件,然后将一下代码加入.m文件中即可实现控制台输出中文,具体代码如下:

#ifndef Release

@implementation NSSet(Log)

- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level 
{
NSMutableString
*desc = [NSMutableString string]; NSMutableString *tabString = [[NSMutableString alloc] initWithCapacity:level]; for (NSUInteger i = 0; i < level; ++i) { [tabString appendString:@"\t"]; } NSString *tab = @"\t"; if (level > 0) { tab = tabString; } [desc appendString:@"\t{(\n"]; for (id obj in self) { if ([obj isKindOfClass:[NSDictionary class]] || [obj isKindOfClass:[NSArray class]] || [obj isKindOfClass:[NSSet class]]) { NSString *str = [((NSDictionary *)obj) descriptionWithLocale:locale indent:level + 1]; [desc appendFormat:@"%@\t%@,\n", tab, str]; } else if ([obj isKindOfClass:[NSString class]]) { [desc appendFormat:@"%@\t\"%@\",\n", tab, obj]; } else if ([obj isKindOfClass:[NSData class]]) { // if is NSData,try parse NSError *error = nil; NSObject *result = [NSJSONSerialization JSONObjectWithData:obj options:NSJSONReadingMutableContainers error:&error]; if (error == nil && result != nil) { if ([result isKindOfClass:[NSDictionary class]] || [result isKindOfClass:[NSArray class]] || [result isKindOfClass:[NSSet class]]) { NSString *str = [((NSDictionary *)result) descriptionWithLocale:locale indent:level + 1]; [desc appendFormat:@"%@\t%@,\n", tab, str]; } else if ([obj isKindOfClass:[NSString class]]) { [desc appendFormat:@"%@\t\"%@\",\n", tab, result]; } } else { @try { NSString *str = [[NSString alloc] initWithData:obj encoding:NSUTF8StringEncoding]; if (str != nil) { [desc appendFormat:@"%@\t\"%@\",\n", tab, str]; } else { [desc appendFormat:@"%@\t%@,\n", tab, obj]; } } @catch (NSException *exception) { [desc appendFormat:@"%@\t%@,\n", tab, obj]; } } } else { [desc appendFormat:@"%@\t%@,\n", tab, obj]; } } [desc appendFormat:@"%@)}", tab]; return desc; } @end @implementation NSArray (Log) - (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
NSMutableString
*desc = [NSMutableString string]; NSMutableString *tabString = [[NSMutableString alloc] initWithCapacity:level]; for (NSUInteger i = 0; i < level; ++i) { [tabString appendString:@"\t"]; } NSString *tab = @""; if (level > 0) { tab = tabString; } [desc appendString:@"\t(\n"]; for (id obj in self) { if ([obj isKindOfClass:[NSDictionary class]] || [obj isKindOfClass:[NSArray class]] || [obj isKindOfClass:[NSSet class]]) { NSString *str = [((NSDictionary *)obj) descriptionWithLocale:locale indent:level + 1]; [desc appendFormat:@"%@\t%@,\n", tab, str]; } else if ([obj isKindOfClass:[NSString class]]) { [desc appendFormat:@"%@\t\"%@\",\n", tab, obj]; } else if ([obj isKindOfClass:[NSData class]]) { NSError *error = nil; NSObject *result = [NSJSONSerialization JSONObjectWithData:obj options:NSJSONReadingMutableContainers error:&error]; if (error == nil && result != nil) { if ([result isKindOfClass:[NSDictionary class]] || [result isKindOfClass:[NSArray class]] || [result isKindOfClass:[NSSet class]]) { NSString *str = [((NSDictionary *)result) descriptionWithLocale:locale indent:level + 1]; [desc appendFormat:@"%@\t%@,\n", tab, str]; } else if ([obj isKindOfClass:[NSString class]]) { [desc appendFormat:@"%@\t\"%@\",\n", tab, result]; } } else { @try { NSString *str = [[NSString alloc] initWithData:obj encoding:NSUTF8StringEncoding]; if (str != nil) { [desc appendFormat:@"%@\t\"%@\",\n", tab, str]; } else { [desc appendFormat:@"%@\t%@,\n", tab, obj]; } } @catch (NSException *exception) { [desc appendFormat:@"%@\t%@,\n", tab, obj]; } } } else { [desc appendFormat:@"%@\t%@,\n", tab, obj]; } } [desc appendFormat:@"%@)", tab]; return desc; } @end @implementation NSDictionary (Log) - (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
NSMutableString
*desc = [NSMutableString string]; NSMutableString *tabString = [[NSMutableString alloc] initWithCapacity:level]; for (NSUInteger i = 0; i < level; ++i) { [tabString appendString:@"\t"]; } NSString *tab = @""; if (level > 0) { tab = tabString; } [desc appendString:@"\t{\n"]; // Through array, self is array for (id key in self.allKeys) { id obj = [self objectForKey:key]; if ([obj isKindOfClass:[NSString class]]) { [desc appendFormat:@"%@\t%@ = \"%@\",\n", tab, key, obj]; } else if ([obj isKindOfClass:[NSArray class]] || [obj isKindOfClass:[NSDictionary class]] || [obj isKindOfClass:[NSSet class]]) { [desc appendFormat:@"%@\t%@ = %@,\n", tab, key, [obj descriptionWithLocale:locale indent:level + 1]]; } else if ([obj isKindOfClass:[NSData class]]) { NSError *error = nil; NSObject *result = [NSJSONSerialization JSONObjectWithData:obj options:NSJSONReadingMutableContainers error:&error]; if (error == nil && result != nil) { if ([result isKindOfClass:[NSDictionary class]] || [result isKindOfClass:[NSArray class]] || [result isKindOfClass:[NSSet class]]) { NSString *str = [((NSDictionary *)result) descriptionWithLocale:locale indent:level + 1]; [desc appendFormat:@"%@\t%@ = %@,\n", tab, key, str]; } else if ([obj isKindOfClass:[NSString class]]) { [desc appendFormat:@"%@\t%@ = \"%@\",\n", tab, key, result]; } } else { @try { NSString *str = [[NSString alloc] initWithData:obj encoding:NSUTF8StringEncoding]; if (str != nil) { [desc appendFormat:@"%@\t%@ = \"%@\",\n", tab, key, str]; } else { [desc appendFormat:@"%@\t%@ = %@,\n", tab, key, obj]; } } @catch (NSException *exception) { [desc appendFormat:@"%@\t%@ = %@,\n", tab, key, obj]; } } } else { [desc appendFormat:@"%@\t%@ = %@,\n", tab, key, obj]; } } [desc appendFormat:@"%@}", tab]; return desc; } @end #endif

以上代码实现了NSSet/NSDictionry/NSArray类型的展示。

转载于:https://www.cnblogs.com/sandyzhang/p/10077717.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值