對于數(shù)組或者字典中對象均為中文字符串時, 打印為unicode時, 如何正常顯示?
- 對數(shù)組的description方法進行重寫
- 定義一個新的方法搭伤,進行指定字符串的返回
- 以下方法僅僅是針對單個數(shù)組或者單個字典有效, 對于數(shù)組中嵌套字典時, 打印方法無效
數(shù)組
- 使用for循環(huán)進行打印
- (NSString *)chineseDescription {
// 打印數(shù)組時以"("打頭
NSMutableString *desc = [NSMutableString stringWithString:@"(\n"];
/*
取得每一個數(shù)組元素, 進行追加字符串操作, 直到追加到最后一個字符時, 進行換行操作
\" 由于打印中文字符, 所以對元素都手動添加雙引號, 可自行決定是否添加
\t 代表跳至下一個制表符位置
*/
for (int i = 0; i < self.count; i++) {
NSString *string = self[i];
[desc appendFormat:@"\t\"%@\"", string];
if (i != self.count - 1) {
[desc appendString:@",\n"];
}
}
[desc appendString:@"\n)"];
return desc;
- 使用迭代進行打印
- (NSString *)chineseDescription {
NSMutableString *desc = [NSMutableString stringWithString:@"(\n"];
// 迭代數(shù)組中的所有元素, 進行字符串拼接
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[desc appendFormat:@"\t\"%@\",\n", obj];
}];
[desc appendString:@")\n"];
// 刪除最后一個逗號
if (self.count > 0) {
NSRange range = [desc rangeOfString:@"," options:NSBackwardsSearch];
[desc deleteCharactersInRange:range];
}
return desc;
}
字典
- (NSString *)chineseDescription {
NSMutableString *desc = [NSMutableString stringWithString:@"{\n"];
/*
取得每一個鍵值對, 進行追加字符串操作, 直到追加到最后一組鍵值對時, 進行換行操作
\" 由于打印的鍵值對都是中文字符, 所以對元素都手動添加雙引號, 可自行決定是否添加
\t 代表跳至下一個制表符位置
*/
[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[desc appendFormat:@"\t\"%@\" = \"%@\";\n", key, obj];
}];
[desc appendString:@"}\n"];
return desc;
}
只想日后回頭看看來時的路只怎,能發(fā)現(xiàn)自己并不是一無所有。