为什么[NSNull null]值没有添加到NSDictionary中?

时间:2014-04-08 02:36:01

标签: ios objective-c

我正在使用下面的代码创建一个NSDictionary,并且我希望当originalMessageId.intValue == -1时,密钥@“originalMessageId”包含[NSNull null]。

但是我的Logger writeToLogFile方法给出了以下输出:

2014-04-07 19:16:52: JSON Params: {
    addressId = 1;
}

我已将代码删除到仅尝试添加两个密钥的位置,但仍然没有添加originalMessageId密钥。

我哪里错了?

P.S。当我将应用程序作为分发版本加载时代码失败,但是当我将应用程序作为开发版本加载时似乎有效。

NSDictionary *jsonDict;

SourcePhoneNumber *sourcePhoneNumber = [DatabaseInterface fetchDefaultSourceNumber];

[Logger writeToLogFile:[NSString stringWithFormat:@"sourcePhoneNumber = %@", sourcePhoneNumber]];

if (originalMessageId.intValue == -1)
{
    //NSString *uuidString = [[NSUUID UUID] UUIDString];

    jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys:
                [NSNumber numberWithUnsignedLongLong:1], @"addressId", /* should be sourcePhoneNumber.addressId */
                //messageBody, @"messageBody",
                //contacts, @"contacts",
                //uuidString, @"clientId",
                [NSNull null], @"originalMessageId",
                nil];
}
else
{
    jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys:
                [NSNumber numberWithUnsignedLongLong:1], @"addressId", /* should be sourcePhoneNumber.addressId */
                originalMessageId, @"originalMessageId",
                messageBody, @"messageBody",
                contacts, @"contacts",
                nil];
}

[Logger writeToLogFile:[NSString stringWithFormat:@"JSON Params: %@", jsonDict]];

1 个答案:

答案 0 :(得分:3)

如果originalMessageIdnil,您会看到输出。这会导致if条件无法转到else部分。如果`originalMessageIdnil,那么nil会在此时终止字典的创建,只留下addressId密钥及其值。

因此,您需要确定originalMessageIdnil的原因。