2017-03-07 7 views
0

Ich habe den folgenden Objekt C-Code zum Empfangen von PubNub-Nachricht.Convert Nachricht von PubNub zu Dictionary-Objekt

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


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

} 

Die zurückgegebenen Daten sind

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 

Ich mag die Nachricht zu einem Dictionary-Objekt analysieren für den Zugriff auf den „Wert“ von dem „Schlüssel“ mit

Ich bin sehr neu in Ziel C-Programmierung und weiß nicht, wie zu tun ist.

Bitte helfen.

+0

, wo Sie diese 'didReceiveMessage' Dank in AppDelegate oder Ihre VC –

Antwort

1

Schleife durch das Nachrichtenfeld und setze den Schlüsselwert im Wörterbuch.

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); 

Oder

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); 
+0

genannt. Es funktioniert. –

+0

@EnochChan Willkommen Kumpel :) –

+0

ist es ein Array von Wörterbuch 'message.data.message', dann warum Sie die anderen converson –

0

können Sie unter Methode verwenden, um Ihre Daten zu parsen und in Wörterbuch konvertieren

ChatterBoxMessage *chatterBoxMessage = [[ChatterBoxMessage alloc] initFromDictionary: message.data.message withTimeToken: message.data.timetoken]; 

[chatterBoxMessage asDictionary]; 

Mit dieser Methode können Sie dictionary bekommen.

Oben ChatterBoxMessage ist eine PubNub-Bibliotheksklasse.

Auch können Sie Ihre Daten wie unten analysieren:

for (NSDictionary *objectData in message.data.message) { 
     NSLog(@"Value : %@",objectData[@"value"]); 
     NSLog(@"Key : %@",objectData[@"key"]); 
}