cdts/xdts-ios 3/Pods/DDSqliteManager/SqliteSpec/Classes/DDNSObject+Ext.m
2023-07-27 09:20:00 +08:00

117 lines
3.7 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// DDNSObject+Ext.m
// XiYuWang
//
// Created by 李胜书 on 16/5/19.
// Copyright © 2016年 Ehsy_Sanli. All rights reserved.
//
#import "DDNSObject+Ext.h"
@implementation NSObject (Ext)
+ (instancetype)objectInitWithDictionary:(NSDictionary *)data {
return [[self alloc] initWithDictionary:data];
}
- (instancetype)initWithDictionary:(NSDictionary *)data {
{
self = [self init];
if (self) {
[self assginToPropertyWithDictionary:data];
}
return self;
}
}
#pragma mark -- 通过字符串来创建该字符串的Setter方法并返回
- (SEL) creatSetterWithPropertyName: (NSString *) propertyName{
//1.首字母大写
if (propertyName.length > 1) {
NSString *tempFirstStr = [propertyName substringToIndex:1];
NSString *tempSecondStr = [propertyName substringFromIndex:1];
tempFirstStr = [tempFirstStr capitalizedString];
propertyName = [tempFirstStr stringByAppendingString:tempSecondStr];
}else {
propertyName = [propertyName capitalizedString];
}
//2.拼接上set关键字
propertyName = [NSString stringWithFormat:@"set%@:", propertyName];
//3.返回set方法
return NSSelectorFromString(propertyName);
}
/************************************************************************
*把字典赋值给当前实体类的属性
*参数:字典
*适用情况当网络请求的数据的key与实体类的属性相同时可以通过此方法吧字典的Value
* 赋值给实体类的属性
************************************************************************/
- (void)assginToPropertyWithDictionary: (NSDictionary *) data {
if (data == nil) {
return;
}
//1.获取字典的key
NSArray *dicKey = [data allKeys];
//2.循环遍历字典key, 并且动态生成实体类的setter方法把字典的Value通过setter方法
//赋值给实体类的属性
for (int i = 0; i < dicKey.count; i ++) {
///2.1 通过getSetterSelWithAttibuteName 方法来获取实体类的set方法
SEL setSel = [self creatSetterWithPropertyName:dicKey[i]];
if ([self respondsToSelector:setSel]) {
//2.2 获取字典中key对应的value
NSObject *value = [NSString stringWithFormat:@"%@", data[dicKey[i]]];
//2.3 把值通过setter方法赋值给实体类的属性
[self performSelectorOnMainThread:setSel
withObject:value
waitUntilDone:[NSThread isMainThread]];
}
}
}
/**************************************/
- (id)objConvertToStr {
if (self == nil) {
return @"";
}else if ([self isKindOfClass:[NSString class]]) {
return (NSString *)self;
}else if ([self isKindOfClass:[NSNumber class]]) {
return [((NSNumber *)self) stringValue];
}
return [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:nil] encoding:NSUTF8StringEncoding];
}
- (id)jsonStrConvertToObj {
if (![self isKindOfClass:[NSString class]]) {
return [NSNull null];
}
NSString *json = (NSString *)self;
return [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
}
+ (NSArray *)xxd_objArrFromKeyValues:(id)res {
return [self mj_objectArrayWithKeyValuesArray:res];
}
+ (instancetype)xxd_objFromKeyValue:(id)res {
return [self mj_objectWithKeyValues:res];
}
- (NSDictionary *)xxd_keyValues {
return self.mj_keyValues;
}
+ (NSArray *)xxd_keyValuesArrFromObjArr:(NSArray *)res {
return [self mj_keyValuesArrayWithObjectArray:res];
}
@end