Created
December 19, 2013 18:11
-
-
Save jerryhjones/8043655 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// NSObject+TypeValidation.h | |
// | |
// Created by Jerry Jones on 5/15/12. | |
// Copyright (c) 2012 Spaceman Labs, LLC. All rights reserved. | |
// | |
#import <Foundation/Foundation.h> | |
BOOL CFTypeIsNull(id object); | |
BOOL CFTypeIsNumber(id object); | |
BOOL CFTypeIsDate(id object); | |
BOOL CFTypeIsString(id object); | |
BOOL CFTypeIsDictionary(id object); | |
BOOL CFTypeIsArray(id object); | |
BOOL CFTypeIsBoolean(id object); | |
BOOL CFTypeIsData(id object); | |
@interface NSObject (TypeValidation) | |
- (BOOL)isNull; | |
- (BOOL)isNumber; | |
- (BOOL)isDate; | |
- (BOOL)isString; | |
- (BOOL)isDictionary; | |
- (BOOL)isArray; | |
- (BOOL)isBoolean; | |
- (BOOL)isData; | |
- (NSNull *)nullOrNilValue; | |
- (NSNumber *)numberOrNilValue; | |
- (NSDate *)dateOrNilValue; | |
- (NSString *)stringOrNilValue; | |
- (NSDictionary *)dictionaryOrNilValue; | |
- (NSArray *)arrayOrNilValue; | |
- (NSData *)dataOrNilValue; | |
@end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// NSObject+TypeValidation.m | |
// | |
// Created by Jerry Jones on 5/15/12. | |
// Copyright (c) 2012 Spaceman Labs, LLC. All rights reserved. | |
// | |
#import "NSObject+TypeValidation.h" | |
BOOL CFTypeIsNull(id object) | |
{ | |
return CFNullGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsNumber(id object) | |
{ | |
return CFNumberGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsDate(id object) | |
{ | |
return CFDateGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsString(id object) | |
{ | |
return CFStringGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsDictionary(id object) | |
{ | |
return CFDictionaryGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsArray(id object) | |
{ | |
return CFArrayGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsBoolean(id object) | |
{ | |
return CFBooleanGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
BOOL CFTypeIsData(id object) | |
{ | |
return CFDataGetTypeID() == CFGetTypeID((__bridge CFTypeRef)object); | |
} | |
@implementation NSObject (TypeValidation) | |
- (BOOL)isNull | |
{ | |
return CFTypeIsNull(self); | |
} | |
- (BOOL)isNumber | |
{ | |
return CFTypeIsNumber(self); | |
} | |
- (BOOL)isDate | |
{ | |
return CFTypeIsDate(self); | |
} | |
- (BOOL)isString | |
{ | |
return CFTypeIsString(self); | |
} | |
- (BOOL)isDictionary | |
{ | |
return CFTypeIsDictionary(self); | |
} | |
- (BOOL)isArray | |
{ | |
return CFTypeIsArray(self); | |
} | |
- (BOOL)isBoolean | |
{ | |
return CFTypeIsBoolean(self); | |
} | |
- (BOOL)isData | |
{ | |
return CFTypeIsData(self); | |
} | |
- (NSNull *)nullOrNilValue | |
{ | |
return CFTypeIsNull(self) ? (NSNull *)self : nil; | |
} | |
- (NSNumber *)numberOrNilValue | |
{ | |
return CFTypeIsNumber(self) ? (NSNumber *)self : nil; | |
} | |
- (NSDate *)dateOrNilValue | |
{ | |
return CFTypeIsData(self) ? (NSDate *)self : nil; | |
} | |
- (NSString *)stringOrNilValue | |
{ | |
return CFTypeIsString(self) ? (NSString *)self : nil; | |
} | |
- (NSDictionary *)dictionaryOrNilValue | |
{ | |
return CFTypeIsDictionary(self) ? (NSDictionary *)self : nil; | |
} | |
- (NSArray *)arrayOrNilValue | |
{ | |
return CFTypeIsArray(self) ? (NSArray *)self : nil; | |
} | |
- (NSData *)dataOrNilValue | |
{ | |
return CFTypeIsData(self) ? (NSData *)self : nil; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment