用Xcode開發時,有時需要跟蹤對象的詳細信息內容,但是有時 對象的屬性中有數組并且數組的內容為中文時,用NSLog輸出對象時,數組中的中文無法顯示會無法顯示。
例如:
//person類#import <Foundation/Foundation.h>@interface Person : NSObject@PRoperty (nonatomic,copy) NSString *name;//興趣屬性,為數組@property (nonatomic,strong) NSArray *interests;@end#import "Person.h"@implementation Person- (NSString *)description{ return [NSString stringWithFormat:@"name = %@,interests = %@",_name,_interests];}@end
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person *p = [[Person alloc]init]; p.name = @"王二麻子"; p.interests = @[@"打架",@"嫖娼",@"販毒"]; //輸出p對象的內容 NSLog(@"%@",p); } return 0;}
輸出結果:
2014-05-25 20:24:14.887 顯示中文[1064:303] name = 王二麻子,interests = (
"/U6253/U67b6",
"/U5ad6/U5a3c",
"/U8d29/U6bd2"
)
Program ended with exit code: -1
要想顯示中文,需要對數組添加分類如下:
1 #import "NSArray+Log.h" 2 3 @implementation NSArray (Log) 4 5 - (NSString *)descriptionWithLocale:(id)locale 6 { 7 // 遍歷數組中的所有內容,將內容拼接成一個新的字符串返回 8 NSMutableString *strM = [NSMutableString string]; 9 10 [strM appendString:@"(/n"];11 12 // 遍歷數組,self就是當前的數組13 for (id obj in self) {14 // 在拼接字符串時,會調用obj的description方法15 [strM appendFormat:@"/t%@,/n", obj];16 }17 18 [strM appendString:@")"];19 20 return strM;21 }22 23 @end
再次運行結果:
2014-05-25 20:33:45.259 顯示中文[1116:303] name = 王二麻子,interests = (
打架,
嫖娼,
販毒,
)
新聞熱點
疑難解答