ObjectForKey null check
Trying to validate data in item (item NSDictionary
)
I thought this should work, but I end up in the second if and fail:
unrecognized selector sent to instance
becausegalleryArr
(null)
NSArray *galleryArr = [item objectForKey:@"photos"];
if (galleryArr != nil ) {
if ([galleryArr count] != 0) {
//do something
}
}
Any ideas?
0
source to share
3 answers
I solved this problem with this simple Objective-C simple category:
NSDictionary + NotNull.h
#import <Foundation/Foundation.h>
/*! This category extends NSDictionary to work around an issue with NSNull object.
*/
@interface NSDictionary (NotNull)
/*! @abstract Returns the value associated with a given key, but only if the value is not NSNull.
@param aKey The key for which to return the corresponding value.
@return The value associated with the given key, or nil if no value is associated with the key, or the value is NSNull.
*/
- (id)objectOrNilForKey:(id)aKey;
@end
NSDictionary + NotNull.m
#import "NSDictionary+NotNull.h"
@implementation NSDictionary (NotNull)
- (id)objectOrNilForKey:(id)aKey
{
id object = [self objectForKey:aKey];
if (object == [NSNull null]) {
return nil;
}
return object;
}
@end
Now you can just call:
NSArray *galleryArr = [item objectOrNilForKey:@"photos"];
+1
source to share