Xcode控制台輸出中文


創建一個.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類型的展示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM