如何使用 swift 从 [Any] 访问密钥
How to access key from [Any] using swift
我正在使用 swift 开发应用程序,我正在集成 cometchat 遵循 link https://docs.cometchat.com/ios-sdk/quick-start/。所以我从服务器获取聊天记录。
现在我从服务器得到了两个(发送者消息和接收者消息)nsmutable数组值。
即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;
}
]
在响应中发送的键值被称为时间戳。
使用发送的键(时间戳)帮助我对数组进行升序排序
订单。
还有我要在 table 视图中加载消息值。
谢谢
像这样处理网络数据是一种非常糟糕的做法。特别是如果你想在你的应用程序中进一步使用这些数据。
- 您需要解析在
Dictionary
或您自己的数据结构中接收到的数据,以便安全地使用它。有很多方法可以做到这一点,包括 JSONSerialization
、Codable Protocol
甚至 SwiftyJSON
等外部库
- 解析后,您将拥有可以使用的对象,而无需将
Any
类型强制转换为预期类型,这会带来很多可选检查。因此,假设您有一个名为 Message
的结构,其中包含来自 JSON 的所有数据,在获取所有对象之后,您将拥有可以在应用程序中传递的整洁的 [Message]
数组。
- 要按某些属性对数组进行排序,您只需使用任何集合的默认函数
sorted(by:)
。在你的情况下:sortedArray = myArray.sorted(by: {[=18=].sent < .sent})
- 现在您可以使用此数组作为 tableView 的数据源,使用
UITableViewDataSource
协议
很明显,您对 iOS 编程还很陌生,所以我建议您查找一些有关处理网络数据的教程。例如,您可以观看此 video,它几乎总结了上述所有内容。
像这样写代码
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
会起作用的..!
您可以使用 [[yourarray objectAtIndex:indexPath.row]objectForKey:@"message"]
等代码访问 TableView 的 cellforrowatindexpath
方法中的数组。通过使用此行,您可以在 indexPath 0 处访问数组消息的值。另外,根据时间戳对数组进行排序,请参考以下代码:
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"sent" ascending: YES];
return [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
我们在 ReadyUI 代码中使用了相同的方法。请参考我们的 ReadyUI 源代码,如果您需要其他帮助,请发送电子邮件至 support@cometchat.com。
我正在使用 swift 开发应用程序,我正在集成 cometchat 遵循 link https://docs.cometchat.com/ios-sdk/quick-start/。所以我从服务器获取聊天记录。
现在我从服务器得到了两个(发送者消息和接收者消息)nsmutable数组值。
即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;
}
]
在响应中发送的键值被称为时间戳。
使用发送的键(时间戳)帮助我对数组进行升序排序 订单。
还有我要在 table 视图中加载消息值。
谢谢
像这样处理网络数据是一种非常糟糕的做法。特别是如果你想在你的应用程序中进一步使用这些数据。
- 您需要解析在
Dictionary
或您自己的数据结构中接收到的数据,以便安全地使用它。有很多方法可以做到这一点,包括JSONSerialization
、Codable Protocol
甚至SwiftyJSON
等外部库
- 解析后,您将拥有可以使用的对象,而无需将
Any
类型强制转换为预期类型,这会带来很多可选检查。因此,假设您有一个名为Message
的结构,其中包含来自 JSON 的所有数据,在获取所有对象之后,您将拥有可以在应用程序中传递的整洁的[Message]
数组。 - 要按某些属性对数组进行排序,您只需使用任何集合的默认函数
sorted(by:)
。在你的情况下:sortedArray = myArray.sorted(by: {[=18=].sent < .sent})
- 现在您可以使用此数组作为 tableView 的数据源,使用
UITableViewDataSource
协议
很明显,您对 iOS 编程还很陌生,所以我建议您查找一些有关处理网络数据的教程。例如,您可以观看此 video,它几乎总结了上述所有内容。
像这样写代码
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
会起作用的..!
您可以使用 [[yourarray objectAtIndex:indexPath.row]objectForKey:@"message"]
等代码访问 TableView 的 cellforrowatindexpath
方法中的数组。通过使用此行,您可以在 indexPath 0 处访问数组消息的值。另外,根据时间戳对数组进行排序,请参考以下代码:
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"sent" ascending: YES];
return [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
我们在 ReadyUI 代码中使用了相同的方法。请参考我们的 ReadyUI 源代码,如果您需要其他帮助,请发送电子邮件至 support@cometchat.com。