Search code examples
iosobjective-cnsdictionarypubnub

Convert message received from PubNub to Dictionary object


I have the following object C code for receiving PubNub message.

- (void)client:(PubNub *)client didReceiveMessage:(PNMessageResult *)message {


    NSLog(@"Received message: %@ on channel %@ at %@", message.data.message,
    message.data.subscribedChannel, message.data.timetoken);

}

The returned data is

Received message: (
    {
    key = userName;
    value = Enoch;
},
    {
    key = photoID;
    value = 3;
},
    {
    key = userID;
    value = 1;
},
    {
    key = actionType;
    value = chat;
},
    {
    key = message;
    value = H;
}
) on channel chat at 14888810882049989

I would like to parse the message to a dictionary object for accessing the "value" by using the "key"

I am very new in objective C programming and don't know how to do.

Please help.


Solution

  • Loop through the message array and set the key value in dictionary.

    NSArray *array = (NSArray*)message.data.message;
    NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
    for (NSDictionary *item in array) {
        [dic setObject:[item objectForKey:@"value"] forKey:[item objectForKey:@"key"]];
    }
    NSLog(@"%@", dic);
    

    Or

    NSArray *array = (NSArray*)message.data.message;
    NSArray *values = [array valueForKey: @"value"];
    NSArray *keys = [array valueForKey: @"key"];
    NSDictionary *dic = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
    NSLog(@"%@", dic);