Files
mier_ios/SweetParty/第三方库/PrintBeautifulLog/PrintBeautifulLog.m

167 lines
5.7 KiB
Mathematica
Raw Normal View History

2025-08-11 10:43:19 +08:00
//
// PrintBeautifulLog.m
// PrintBeautifulLog
//
// Created by on 2018/9/14.
// Copyright © 2018 shixueqian. All rights reserved.
//
/*
NSDictionaryNSArrayJSON
*/
//DEBUG
#ifdef DEBUG
#import "PrintBeautifulLog.h"
#import <objc/runtime.h>
#pragma mark -
static inline void sq_swizzleSelector(Class class, SEL originalSelector, SEL swizzledSelector) {
Method originalMethod = class_getInstanceMethod(class, originalSelector);
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
BOOL didAddMethod = class_addMethod(class,
originalSelector,
method_getImplementation(swizzledMethod),
method_getTypeEncoding(swizzledMethod));
if (didAddMethod) {
class_replaceMethod(class,
swizzledSelector,
method_getImplementation(originalMethod),
method_getTypeEncoding(originalMethod));
} else {
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
#pragma mark - NSObject
@implementation NSObject (PrintBeautifulLog)
//objjsonnil.
- (NSString *)convertToJsonString {
//JSON
if (![NSJSONSerialization isValidJSONObject:self]) return nil;
NSError *error = nil;
NSJSONWritingOptions jsonOptions = NSJSONWritingPrettyPrinted;
if (@available(iOS 11.0, *)) {
//11.0JSONkey
jsonOptions = NSJSONWritingPrettyPrinted | NSJSONWritingSortedKeys ;
}
//JSON
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error];
if (error || !jsonData) return nil;
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
return jsonString;
}
@end
#pragma mark - NSDictionary
@implementation NSDictionary (PrintBeautifulLog)
// descriptionWithLocale:
- (NSString *)printlog_descriptionWithLocale:(id)locale{
NSString *result = [self convertToJsonString];//JSON
if (!result) {
result = [self printlog_descriptionWithLocale:locale];//使
return result;
}
return result;
}
// descriptionWithLocale:indent:
- (NSString *)printlog_descriptionWithLocale:(id)locale indent:(NSUInteger)level {
NSString *result = [self convertToJsonString];
if (!result) {
result = [self printlog_descriptionWithLocale:locale indent:level];//使
return result;
}
return result;
}
// debugDescription 使po
- (NSString *)printlog_debugDescription{
NSString *result = [self convertToJsonString];
if (!result) return [self printlog_debugDescription];
return result;
}
//load
+ (void)load {
//
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = [self class];
sq_swizzleSelector(class, @selector(descriptionWithLocale:), @selector(printlog_descriptionWithLocale:));
sq_swizzleSelector(class, @selector(descriptionWithLocale:indent:), @selector(printlog_descriptionWithLocale:indent:));
sq_swizzleSelector(class, @selector(debugDescription), @selector(printlog_debugDescription));
});
}
@end
#pragma mark - NSArray
@implementation NSArray (PrintBeautifulLog)
// descriptionWithLocale:
- (NSString *)printlog_descriptionWithLocale:(id)locale{
NSString *result = [self convertToJsonString];//JSON
if (!result) {
result = [self printlog_descriptionWithLocale:locale];//使
return result;
}
return result;
}
// descriptionWithLocale:indent:
- (NSString *)printlog_descriptionWithLocale:(id)locale indent:(NSUInteger)level {
NSString *result = [self convertToJsonString];
if (!result) {
result = [self printlog_descriptionWithLocale:locale indent:level];//使
return result;
}
return result;
}
// debugDescription 使po
- (NSString *)printlog_debugDescription{
NSString *result = [self convertToJsonString];
if (!result) return [self printlog_debugDescription];
return result;
}
//load
+ (void)load {
//
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = [self class];
sq_swizzleSelector(class, @selector(descriptionWithLocale:), @selector(printlog_descriptionWithLocale:));
sq_swizzleSelector(class, @selector(descriptionWithLocale:indent:), @selector(printlog_descriptionWithLocale:indent:));
sq_swizzleSelector(class, @selector(debugDescription), @selector(printlog_debugDescription));
});
}
@end
#endif