如何直接从NSDictionary中删除空值

时间:2016-03-19 10:27:17

标签: iphone xcode nsdictionary

我是个初学者,最近在这个问题上遇到了很多麻烦。 我想从我的应用程序将NSDictnonary数据传递到服务器,在某些情况下,如果用户没有选择任何选项,我想删除nil对象。 我已经研究过这个似乎是正确方法的线程,但我没有成功在我的代码中实现。 How to remove a null value from NSDictionary

我的猜测是直接在我的NSDictonary中将代码实现为Null 这是我的词典代码

     -(NSDictionary*)parametersForCreateActivities

   {
    NSString *token = [[A0SimpleKeychain keychain] stringForKey:tokenConstant];
    NSString *userId = [[A0SimpleKeychain keychain] stringForKey:child_id];
    NSString *userCreate = [[NSUserDefaults standardUserDefaults] objectForKey:@"CreateTitle"];
    NSString *createDescription = [[NSUserDefaults standardUserDefaults] objectForKey:@"DescriptionText"];
    NSString *createTimestart = [[NSUserDefaults standardUserDefaults] objectForKey:@"TimeStartString"];
    NSString *createTimestop = [[NSUserDefaults standardUserDefaults] objectForKey:@"TimeStopString"];
    NSString *createImage = [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"];

    NSDictionary *parameters;
    if (userId && token) {
        parameters = @{child_id: userId, tokenConstant:token, activity_name    :userCreate, create_Description :createDescription, create_Timestart :createTimestart, create_Timestop :createTimestop, create_Image :createImage};

    }
    return parameters;
}

我的猜测是它应该在代码中检查nil对象并删除主题。但我确实在努力弄清楚如何格式化代码。 我猜测代码应该是这样的,但我不知道在哪里放置它以及如何格式化它。

NSMutableDictionary *dict = [parametersForCreateActivities mutableCopy];
NSArray *keysForNullValues = [dict allKeysForObject:[NSNull null]];
[dict removeObjectsForKeys:DefaultcreateImageID];

1 个答案:

答案 0 :(得分:0)

尝试以下代码

NSMutableDictionary *yourDictionary; // Your dictionary object with data

NSMutableDictionary *updatedDic = [yourDictionary mutableCopy];
for (NSString *key in [yourDictionary allKeys]) {
    if ([yourDictionary[key] isEqual:[NSNull null]] || [yourDictionary[key] isKindOfClass:[NSNull class]]) {
        updatedDic[key] = @"";
    }
}
yourDictionary = [updatedDic copy];
NSLog(@"%@",yourDictionary);