Inserting nil objects into an NSDictionary
nsdictionary, objective-c
Solution
It's a bit long winded but you could do
static id ObjectOrNull(id object)
{
return object ?: [NSNull null];
}
parameters:@{
@"auth_token" : ObjectOrNull(token),
@"name" : ObjectOrNull(drunk.name),
@"date_started" : ObjectOrNull(drunk.started_drinking),
@"date_stopped" : ObjectOrNull(drunk.stopped_drinking),
@"prescribing_doctor" : ObjectOrNull(drunk.fat),
@"pharmacy" : ObjectOrNull(drunk.dumb),
}
Problem
If we have an API that requires only 2 out of an objects 5 properties and iPhone app doesn't require them to instantiate an object, when the object is used in the params NSDicitionary the app will crash. I was told NSDictionary will not let you assign nil values, as when it reaches nil it thinks its finished. Does objective-c have a way to spit out an objects non-nil properties into an NSDictionary? Example: ``` [Drunk alloc] init]; drunk.started_drinking = [NSDate date]; drunk.stopped_drinking (we don't set this because he is still a drunk) drunk.fat = YES; drunk.dumb = YES; parameters:@{ @"auth_token" :token, @"name" : drunk.name, @"date_started" : drunk.started_drinking, @"date_stopped" : drunk.stopped_drinking, @"prescribing_doctor" : drunk.fat, @"pharmacy" : drunk.dumb } ``` This will crash when it gets to the stopped_drinking property. Any suggestions on how to handle this?