Files
mier_ios/SweetParty/Expand/YBKit/NSDictionary+SafeObject.m
2025-08-11 10:43:19 +08:00

169 lines
4.4 KiB
Objective-C
Executable File
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.

//
// 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