Files
mier_ios/SweetParty/Expand/YBKit/NSDictionary+SafeObject.m

169 lines
4.4 KiB
Mathematica
Raw Normal View History

2025-08-11 10:43:19 +08:00
//
// NSDictionary+SafeObject.m
// iBIMiPhone
//
// Created by yuebin on 2018/11/20.
// Copyright © 2018 ysg. All rights reserved.
//
#import "NSDictionary+SafeObject.h"
@implementation NSDictionary (SafeObject)
- (BOOL)objIsNull {
return (self == nil || [self isEqual:[NSNull null]]) ? YES : NO;
}
+ (BOOL)objIsNull:(id)obj {
return (obj == nil || [obj isEqual:[NSNull null]]) ? YES : NO;
}
- (NSInteger)safeIntForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return -1;
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"(字典key非法");
return -1;
}
id value = [self objectForKey:key];
if ([value isKindOfClass:[NSString class]]) {
return ((NSString *)value).intValue;
}
if ([value isKindOfClass:[NSNumber class]]) {
return ((NSNumber *)value).integerValue;
}
if ([value isKindOfClass:NSNull.class]) {
return 0;
}
return -1;
}
- (NSString *)safeStringForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return @"";
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"stringkey非法");
return @"";
}
NSString *value = [self objectForKey:key];
if ([value isKindOfClass:[NSNumber class]]) {
return ((NSNumber *)value).stringValue;
}
if ([value isKindOfClass:[NSString class]] && (value != nil) ) {
return value;
}
return @"";
}
- (NSDictionary *)safeDictionaryForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return @{};
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"字典key非法");
return @{};
}
NSDictionary *value = [self objectForKey:key];
if ([value isKindOfClass:[NSDictionary class]] && (value != nil)) {
return value;
}
return @{};
}
- (BOOL)safeBoolForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return NO;
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"boolkey非法");
return NO;
}
NSString *value = [self objectForKey:key];
if ((value != nil) || [value isKindOfClass:[NSString class]]) {
return value.boolValue;
}
return NO;
}
- (float)safeFloatForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return -1.0f;
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"(floatkey非法");
return -1.0f;
}
id value = [self objectForKey:key];
if ([value isKindOfClass:[NSString class]]) {
return ((NSString *)value).floatValue;
}
if ([value isKindOfClass:[NSNumber class]]) {
return ((NSNumber *)value).floatValue;
}
return -1.0f;
}
- (NSURL *)safeUrlForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return [NSURL URLWithString:@""];
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"urlkey非法");
return [NSURL URLWithString:@""];
}
NSString *value = [self objectForKey:key];
if ((value != nil) && [value isKindOfClass:[NSString class]]) {
NSString *url = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
return [NSURL URLWithString:url];
}
return [NSURL URLWithString:@""];
}
- (NSArray *)safeArrayForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return @[];
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"arraykey非法");
return @[];
}
NSArray *value = [self objectForKey:key];
if ((value != nil) && [value isKindOfClass:[NSArray class]]) {
return value;
}
return @[];
}
@end