我正在使用swift开发一个应用程序,在我的链接https://docs.cometchat.com/ios-sdk/quick-start/之后整合了一个Cometchat。所以我从服务器上获取聊天记录。
现在我从服务器获得了两个(发件人消息和接收者消息)nsmutablearray值。
即,var firstArr = response!["history"]! as! NSMutableArray
var secondArr = response!["history"]! as! NSMutableArray
我合并了两个nsmuatblearray值,我得到的结果是:
[
{
from = 1;
id = 68;
localmessageid = "46A9A5E5-FEEC-4588-B7D6-18E88BA68393_2";
message = "ckeck messages";
"message_type" = 10;
old = 1;
self = 1;
sent = 1521185409000;
},
{
from = 2;
id = 69;
localmessageid = "46A9A5E5-FEEC-4588-B7D6-18E88BA68393_1";
message = "sent to thiyakarajan";
"message_type" = 10;
old = 1;
self = 1;
sent = 1521185410000;
}
]
在响应中,发送的密钥值被称为时间戳。
使用该发送密钥(timestamp)帮助我按升序排序数组 顺序。
我还要在表视图中加载消息值。
由于
答案 0 :(得分:1)
您可以使用cellforrowatindexpath
之类的代码在TableView的[[yourarray objectAtIndex:indexPath.row]objectForKey:@"message"]
方法中访问数组。通过使用此行,您可以在indexPath 0访问数组的消息值。还可以根据时间戳对数组进行排序,请参阅以下代码:
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"sent" ascending: YES];
return [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
我们在ReadyUI代码中使用了相同的内容。如果您需要其他帮助,请参阅我们的ReadyUI源代码并发送电子邮件至support@cometchat.com。
答案 1 :(得分:0)
使用像这样的网络数据是一种非常糟糕的做法。特别是如果您想在应用程序内部进一步使用此数据。
Dictionary
或您自己的数据结构中收到的数据,以便安全地使用它。有很多方法可以做到这一点,包括JSONSerialization
,Codable Protocol
甚至外部图书馆,例如SwiftyJSON
Any
类型转换为预期类型,这会带来大量可选检查。所以,让我们假设您的结构名为Message
,其中包含来自JSON的所有数据,在获取了所有对象之后,您将拥有整齐的[Message]
数组,您可以在其周围传递应用。 sorted(by:)
。在您的情况下:sortedArray = myArray.sorted(by: {$0.sent < $1.sent})
UITableViewDataSource
协议很明显,您对iOS编程很陌生,所以我建议您查找一些有关使用网络数据的教程。你可以看一下video,例如,它几乎总结了上面提到的所有内容。
答案 2 :(得分:0)
像这样的代码
Save Swift Array
var firstArr : Array<Dictionary<String, Any>> = response!["history"]! as! Array<Dictionary<String, Any>>
Access valus
let strMessage : String = fistArr[index]["message"] as! String
会工作..!