69 lines
2.8 KiB
Objective-C
69 lines
2.8 KiB
Objective-C
//
|
|
// TDCheck.m
|
|
// ThinkingSDK
|
|
//
|
|
// Created by wwango on 2021/9/10.
|
|
// Copyright © 2021 thinkingdata. All rights reserved.
|
|
//
|
|
|
|
#import "TDCheck.h"
|
|
#import "TDLogging.h"
|
|
|
|
@implementation TDCheck
|
|
|
|
+ (NSDictionary *)td_checkToJSONObjectRecursive:(NSDictionary *)properties timeFormatter:(NSDateFormatter *)timeFormatter {
|
|
return (NSDictionary *)[self td_checkToObjectRecursive:properties timeFormatter:timeFormatter];
|
|
}
|
|
|
|
// Five basic types: list, time, Boolean, value, text, list only supports basic data types
|
|
// Advanced data types: object, object group
|
|
+ (NSObject *)td_checkToObjectRecursive:(NSObject *)properties timeFormatter:(NSDateFormatter *)timeFormatter {
|
|
if (TD_CHECK_NIL(properties)) {
|
|
return properties;
|
|
} else if (TD_CHECK_CLASS_NSDictionary(properties)) {
|
|
NSDictionary *propertyDic = [(NSDictionary *)properties copy];
|
|
NSMutableDictionary<NSString *, id> *propertiesDic = [NSMutableDictionary dictionaryWithDictionary:propertyDic];
|
|
for (NSString *key in [propertyDic keyEnumerator]) {
|
|
NSObject *newValue = [self td_checkToJSONObjectRecursive:propertyDic[key] timeFormatter:timeFormatter];
|
|
propertiesDic[key] = newValue;
|
|
}
|
|
return propertiesDic;
|
|
} else if (TD_CHECK_CLASS_NSArray(properties)) {
|
|
NSMutableArray *arrayItem = [(NSArray *)properties mutableCopy];
|
|
for (int i = 0; i < arrayItem.count ; i++) {
|
|
id item = [self td_checkToJSONObjectRecursive:arrayItem[i] timeFormatter:timeFormatter];
|
|
if (item) arrayItem[i] = item;
|
|
}
|
|
return arrayItem;
|
|
} else if (TD_CHECK_CLASS_NSDate(properties)) {
|
|
NSString *dateStr = [timeFormatter stringFromDate:(NSDate *)properties];
|
|
return dateStr;
|
|
} else {
|
|
return properties;
|
|
}
|
|
}
|
|
|
|
// old method
|
|
//inline static NSDictionary *_td_old_checkToJSONObject(NSDictionary *properties, NSDateFormatter *timeFormatter) {
|
|
// NSMutableDictionary<NSString *, id> *propertiesDic = [NSMutableDictionary dictionaryWithDictionary:properties];
|
|
// for (NSString *key in [properties keyEnumerator]) {
|
|
// if ([properties[key] isKindOfClass:[NSDate class]]) {
|
|
// NSString *dateStr = [timeFormatter stringFromDate:(NSDate *)properties[key]];
|
|
// propertiesDic[key] = dateStr;
|
|
// } else if ([properties[key] isKindOfClass:[NSArray class]]) {
|
|
// NSMutableArray *arrayItem = [properties[key] mutableCopy];
|
|
// for (int i = 0; i < arrayItem.count ; i++) {
|
|
// if ([arrayItem[i] isKindOfClass:[NSDate class]]) {
|
|
// NSString *dateStr = [timeFormatter stringFromDate:(NSDate *)arrayItem[i]];
|
|
// arrayItem[i] = dateStr;
|
|
// }
|
|
// }
|
|
// propertiesDic[key] = arrayItem;
|
|
// }
|
|
// }
|
|
// return propertiesDic;
|
|
//}
|
|
|
|
|
|
@end
|