From dadbdbfd31325d51f89b1a5c4f6aa3b085a5ee18 Mon Sep 17 00:00:00 2001 From: "Hedden, Kyle Matthew" Date: Wed, 27 Nov 2019 14:39:43 -0500 Subject: [PATCH] Add safeArrayWithObjects class method for safely generating arrays with fields that might be nil. --- .../MVMCore/Categories/NSArray+MFConvenience.h | 3 +++ .../MVMCore/Categories/NSArray+MFConvenience.m | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/MVMCore/MVMCore/Categories/NSArray+MFConvenience.h b/MVMCore/MVMCore/Categories/NSArray+MFConvenience.h index 8fb9036..ee2671f 100644 --- a/MVMCore/MVMCore/Categories/NSArray+MFConvenience.h +++ b/MVMCore/MVMCore/Categories/NSArray+MFConvenience.h @@ -12,6 +12,9 @@ @interface NSArray (MFConvenience) +/// Creates an array with the given objects, ignoring any nil values, terminated by [NSNull null]. ++ (nonnull NSArray *)safeArrayWithObjects:(nullable id)object, ...; + // Gets the object from the array and verfies that it is of a given type. - (nullable id)objectAtIndex:(NSUInteger)index ofType:(nonnull Class)type; diff --git a/MVMCore/MVMCore/Categories/NSArray+MFConvenience.m b/MVMCore/MVMCore/Categories/NSArray+MFConvenience.m index c2c8839..354549c 100644 --- a/MVMCore/MVMCore/Categories/NSArray+MFConvenience.m +++ b/MVMCore/MVMCore/Categories/NSArray+MFConvenience.m @@ -10,6 +10,21 @@ @implementation NSArray (MFConvenience) ++ (NSArray *)safeArrayWithObjects:(id)object, ... { + NSMutableArray *array = [[NSMutableArray alloc] init]; + va_list args; + va_start(args, object); + id nextObject = object; + while(nextObject != [NSNull null]) { + if (nextObject != nil) { + [array addObject:nextObject]; + } + nextObject = va_arg(args, id); + } + va_end(args); + return array; +} + - (nullable id)objectAtIndex:(NSUInteger)index ofType:(nonnull Class)type { id theObject = nil;