我想创建一个聊天记录,但我不知道该怎么做

I want to create a chatLog ,but I don't know how to do it

现在我有一个文本视图,我收到内容消息,我会做 NSString *speakText=[[NSString alloc]initWithFormat:@"%@\n%@\n%@",fromWho,content,_cheatView.text]; 展示它。 但现在我想创建一个数组来保存所有消息, 在像 sample

这样的数组中
> [0]  (first message 3pair key/value)
   >[0]
   >[1]
   >[2]
>[1] (second message 3pair key/value)
>[2]
>[x]
>[y]

我试过使用

- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:   (id)message;
{
NSString *toMessageJson = [[NSString alloc]initWithString:message];
    [toMessageJson dataUsingEncoding:NSUTF8StringEncoding];
    NSData *toMessageData =[toMessageJson dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error = nil;
    NSDictionary *messageDic = [NSJSONSerialization JSONObjectWithData:toMessageData options:NSJSONReadingAllowFragments error:&error];
    NSMutableArray *logDic =[NSMutableArray alloc];

   [messageDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL * stop) {  
            if ([key isEqualToString:@"content"]) {     
                [logDic addObject:messageDic];
        }
    }];

但是 logArray 始终只有 1 个对象。

我认为 logDic 令人困惑。一开始我以为logDic是一个字典,适当的命名也应该发生。

我看到的主要问题是您每次收到消息时总是在创建 logDic。

因此,如果您将 logDic 设为 属性 或 iVar。

示例:

//WhatEverClassname @interface WhatEverClassname(){ NSMutableArray *logDic; } @end @implementation WhatEverClassname -(id)init{ if(!(self = [super init])){ return nil; } logDic = [NSMutableArray new]; return self; } @end

那么在你的 didReceived 方法中你就不需要再初始化它了。

实际上不需要此枚举。

[message enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL * stop) ]

应该是这样的:

if(message[@"content"] != nil) [logDic addObject:message[@"content"]]; // no point in looping if you are only expecting a specific key.