Recuperar contenido de los posts de PubNub

Puedo enviar y recibir posts con éxito con PubNub, el problema ocurre cuando bash mostrar el contenido de un post y cargarlo UITableViewCell UITextView .

El Second TEST LOG escribe el post completo, que envío desde mi iPhone (ya lo he probado con la console Dev), pero después de esto la aplicación se bloquea.

 [__NSCFDictionary length]: unrecognized selector sent to instance 

Sé que hay algo mal con un dictionary, pero no puedo resolverlo. Estoy usando un solo NSDictionary para el post que envío a través de PubNub y "llega" a la console, por lo tanto, creo que funciona correctamente. Como puede ver en el código he probado algunas variaciones, pero sin ningún éxito.

ACTUALIZAR

Está funcionando si envío NSString en lugar de NSDictionary.

 @interface ViewController () @property (nonatomic, strong) NSString *myIncomeMessage; @property (nonatomic, strong) NSString *messageFromDict; @property (nonatomic, strong) NSArray *twoChannels; @property (nonatomic, strong) NSDictionary *messagePbnb; //@property (nonatomic, strong) PNMessage *messageNew; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; PNChannel *channel_2 = [PNChannel channelWithName:current.username shouldObservePresence:NO]; PNChannel *channel_1 = [PNChannel channelWithName:self.messageRecipient shouldObservePresence:NO]; [PubNub subscribeOnChannels:self.twoChannels]; [PubNub requestHistoryForChannel:channel_1 from:nil to:nil limit:100 reverseHistory:YES]; [PubNub requestHistoryForChannel:channel_2 from:nil to:nil limit:100 reverseHistory:YES]; [[PNObservationCenter defaultCenter] addMessageReceiveObserver:self withBlock:^(PNMessage *message) { NSLog(@"OBSERVER: Channel: %@, Message: %@", message.channel.name, message.message); NSLog(@"Sample TEST LOG %@", message.message); self.myIncomeMessage = message.message; NSLog(@"Second TEST LOG %@", self.myIncomeMessage); // self.messageFromDict = [NSString stringWithFormat:keyMessage, self.messagePbnb]; // self.messageFromDict = [NSString stringWithFormat:keyMessage, message]; }]; [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(reloadTable) userInfo:nil repeats:YES]; [self setupUIForInput]; } - (IBAction) inputContent { NSString *messageContent = self.textView.text; PNChannel *channel_1 = [PNChannel channelWithName:self.messageRecipient shouldObservePresence:NO]; PNChannel *channel_2 = [PNChannel channelWithName:senderUser.username shouldObservePresence:NO]; self.twoChannels = @[channel_1,channel_2]; [PubNub subscribeOnChannels: self.twoChannels]; self.messagePbnb = @{ @"keyMessage": messageContent, @"keySenderUser": self.senderUser.username, @"keyRecieverChannel": self.messageRecipient} ; [PubNub sendMessage: self.messagePbnb toChannel:channel_1]; [PubNub sendMessage: self.messagePbnb toChannel:channel_2]; [self.textView resignFirstResponder]; [self reloadInputViews]; } -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 10; } -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { OutputTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellThree"]; cell.textOutput.text = self.myIncomeMessage; -(void)reloadTable{ [tableViewThree reloadData]; } 

@sabin, aquí hay un ejemplo, usando un observador: podrías hacer algo similar a través de un delegado:

 [[PNObservationCenter defaultCenter] addMessageReceiveObserver:self withBlock:^(PNMessage *message) { id messageData = message.message; if ([messageData isKindOfClass:[NSDictionary class]]) { NSString *messageString = [NSString stringWithFormat:@"foo: %@, and bar: <%@>", [(NSDictionary *)messageData valueForKey:@"foo"], [(NSDictionary *)messageData valueForKey:@"bar"]]; } }]; 

Si luego lo publicó desde la console web (pubnub.com/console):

 {"foo":"hey", "bar":"you!"} 

Podrías representar una cadena del código anterior (a través de messageString) que se veía así:

 foo: hey, and bar: you! 

¡Déjame saber si eso me ayudó!