按日期分组消息并在表视图中显示



我正在用我的后端web服务创建聊天应用程序,一切都很顺利。我只有一个问题是,当我调用API时,我会收到所有消息,但现在我想按日期过滤消息,比如今天是2020年12月30日,我想在表视图标题中显示日期,而这里的消息是我的json响应

JSON响应

{
"status" : true,
"data" : [
{
"gig_status" : 1,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "25 Dec 2020",
"message_id" : 95,
"msg_timestamp" : "2020-12-24T12:58:58.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 43,
"gig_notes" : "Test"
},
{
"gig_status" : 1,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "28 Dec 2020",
"message_id" : 117,
"msg_timestamp" : "2020-12-28T04:45:04.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 50,
"gig_notes" : "Test"
},
{
"gig_status" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "31 Dec 2020",
"message_id" : 118,
"msg_timestamp" : "2020-12-28T05:04:19.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 62,
"gig_notes" : "new ro ak"
},
{
"gig_status" : 1,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "31 Dec 2020",
"message_id" : 119,
"msg_timestamp" : "2020-12-28T05:11:01.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 62,
"gig_notes" : "new ro ak"
},
{
"gig_status" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "02 Jan 2021",
"message_id" : 120,
"msg_timestamp" : "2020-12-28T05:13:45.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 70,
"gig_notes" : "Test"
},
{
"gig_status" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "02 Jan 2021",
"message_id" : 121,
"msg_timestamp" : "2020-12-28T05:15:20.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 70,
"gig_notes" : "Test"
},
{
"gig_status" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "02 Jan 2021",
"message_id" : 122,
"msg_timestamp" : "2020-12-28T05:23:12.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 70,
"gig_notes" : "Test"
},
{
"gig_status" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"name" : "Artist",
"image_url" : "",
"message" : null,
"from_me" : 1,
"id" : 34,
"gig_date" : "02 Jan 2021",
"message_id" : 123,
"msg_timestamp" : "2020-12-28T05:26:25.000000Z",
"type" : 2,
"star_rating" : null,
"gig_id" : 70,
"gig_notes" : "Test"
},
{
"type" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 124,
"star_rating" : null,
"gig_id" : 70,
"name" : "Artist",
"id" : 34,
"gig_date" : "02 Jan 2021",
"gig_notes" : "Test",
"message" : null,
"msg_timestamp" : "2020-12-28T05:32:07.000000Z",
"image_url" : "",
"gig_status" : 2,
"from_me" : 1
},
{
"type" : "3",
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 125,
"star_rating" : null,
"gig_id" : null,
"name" : "Artist",
"id" : 34,
"gig_date" : "01 Jan 1970",
"gig_notes" : null,
"message" : null,
"msg_timestamp" : "2020-12-28T06:02:42.000000Z",
"image_url" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609135362.png",
"gig_status" : null,
"from_me" : 0
},
{
"type" : "3",
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 126,
"star_rating" : null,
"gig_id" : null,
"name" : "Artist",
"id" : 34,
"gig_date" : "01 Jan 1970",
"gig_notes" : null,
"message" : null,
"msg_timestamp" : "2020-12-28T06:21:48.000000Z",
"image_url" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609136508.png",
"gig_status" : null,
"from_me" : 0
},
{
"type" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 127,
"star_rating" : null,
"gig_id" : 70,
"name" : "Artist",
"id" : 34,
"gig_date" : "02 Jan 2021",
"gig_notes" : "Test",
"message" : null,
"msg_timestamp" : "2020-12-28T07:32:50.000000Z",
"image_url" : "",
"gig_status" : 1,
"from_me" : 1
},
{
"type" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 128,
"star_rating" : null,
"gig_id" : 73,
"name" : "Artist",
"id" : 34,
"gig_date" : "10 Jan 2021",
"gig_notes" : "Test",
"message" : null,
"msg_timestamp" : "2020-12-28T10:25:51.000000Z",
"image_url" : "",
"gig_status" : 1,
"from_me" : 1
},
{
"type" : 2,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 129,
"star_rating" : null,
"gig_id" : 74,
"name" : "Artist",
"id" : 34,
"gig_date" : "19 May 2021",
"gig_notes" : "Tehsgsbs",
"message" : null,
"msg_timestamp" : "2020-12-28T10:28:14.000000Z",
"image_url" : "",
"gig_status" : 1,
"from_me" : 1
},
{
"type" : 0,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 136,
"star_rating" : null,
"gig_id" : null,
"name" : "Artist",
"id" : 34,
"gig_date" : "01 Jan 1970",
"gig_notes" : null,
"message" : "test",
"msg_timestamp" : "2020-12-29T08:36:37.000000Z",
"image_url" : "",
"gig_status" : null,
"from_me" : 0
},
{
"type" : 0,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 139,
"star_rating" : null,
"gig_id" : null,
"name" : "Artist",
"id" : 34,
"gig_date" : "01 Jan 1970",
"gig_notes" : null,
"message" : "ccgg",
"msg_timestamp" : "2020-12-30T05:09:13.000000Z",
"image_url" : "",
"gig_status" : null,
"from_me" : 0
},
{
"type" : 0,
"photo" : "http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png",
"message_id" : 140,
"star_rating" : null,
"gig_id" : null,
"name" : "Artist",
"id" : 34,
"gig_date" : "01 Jan 1970",
"gig_notes" : null,
"message" : "Hello",
"msg_timestamp" : "2020-12-30T06:56:41.000000Z",
"image_url" : "",
"gig_status" : null,
"from_me" : 0
}
],
"message" : ""
}

这是我调用网络服务的函数

func calllMessageAPI(){
showLoader(title: "Please Wait...", controller: self)
let params = ["id": self.id] as [String : Any]
guard let token = UserDefaults.standard.string(forKey: "token") else { return }
let headers: HTTPHeaders = ["Authorization": "Bearer (token)"]
print(headers)
AF.request(chatdetail, method: .post, parameters: params, headers: headers).responseJSON(completionHandler: {(response) in
switch response.result{
case.success(let value):
let json  = JSON(value)
print(json)
let data = json["data"]
if data.isEmpty{

}else{
self.messageData.removeAll()
data.array?.forEach({ (mList) in
let m_list = NewMessageModel(message: mList["message"].stringValue, type: mList["type"].stringValue, star_rating: mList["star_rating"].doubleValue, gig_notes: mList["gig_notes"].stringValue, gig_status: mList["gig_status"].stringValue, name: mList["name"].stringValue, from_me: mList["from_me"].stringValue, message_id: mList["message_id"].stringValue, msg_timestamp: mList["msg_timestamp"].stringValue, gig_id: mList["gig_id"].stringValue, id: mList["id"].stringValue, image_url: mList["image_url"].stringValue, gig_date: mList["gig_date"].stringValue, photo: mList["photo"].stringValue)
self.messageData.insert(m_list, at: 0)
})
let groupedByLength = Dictionary(grouping: data) {
dayMonthYearDateDescription(date: parseDate(value: (($0["msg_timestamp"] as? String)!))) //Getting error here

}
}
self.tblListView.reloadData()
hideLoader(controller: self)
case.failure(let error):
print(error.localizedDescription)
hideLoader(controller: self)
}

})
}

这是我解析json数据的模型类

class NewMessageModel: NSObject{
var message: String?
var type: String?
var star_rating: Double?
var gig_notes: String?
var gig_status: String?
var name: String?
var from_me: String?
var message_id: String?
var msg_timestamp: String?
var gig_id: String?
var id: String?
var image_url: String?
var gig_date: String?
var photo: String?

init(message: String,type: String,star_rating: Double,gig_notes: String,gig_status: String,name: String,from_me: String,message_id: String,msg_timestamp: String,gig_id: String,id: String,image_url: String,gig_date: String,photo: String) {
self.message = message
self.type = type
self.star_rating = star_rating
self.gig_notes = gig_notes
self.gig_status = gig_status
self.name = name
self.from_me = from_me
self.message_id = message_id
self.msg_timestamp = msg_timestamp
self.gig_id = gig_id
self.id = id
self.image_url = image_url
self.gig_date = gig_date
self.photo = photo
}
} 

现在我想过滤我在json响应中得到的消息msg_timestamp,因为我是swift的新手,我不知道如何通过msg_timestamp过滤消息,所以请帮助我解决问题

我建议使用可编码接口来映射对象。

示例:

struct Movies: Codable {

var name : String?
var description : String?
var actors : [String]?
enum CodingKeys: String, CodingKey {
case name = "name"
case description = "description"
case actors = "actors"
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.name = try response.decode(Bool.self, forKey: .name)
self.description = try response.decode(String.self, forKey: .description)
self.actors = try response.decode([String].self, forKey: .actors)
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try response.encode(self.name, forKey: .name)
try response.encode(self.description, forKey: .description)
try response.encode(self.actors, forKey: .actors)
}
}

要在Alamofire中映射此对象,可以使用responseDecodable方法。

示例:

struct HTTPBinResponse: Decodable { let url: String }
AF.request("https://httpbin.org/get").responseDecodable(of: HTTPBinResponse.self) { response in
debugPrint("Response: (response)")
}

使用将字符串日期转换为Date对象

let isoDate = "2020-12-30T06:56:41.000000Z"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:isoDate)!

然后你就可以比较这些日期了。这里有Date对象的描述。因此,您可以对该数组使用filter方法。

尝试低于

jsonDataa是您的消息数据阵列

let groupedByLength = Dictionary(grouping: jsonDataa) {
dayMonthYearDateDescription(date: parseDate(value: ($0["msg_timestamp"] as? String)!))

}

将字符串转换为日期并格式化

func parseDate(value:String) -> Date? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
if let parsedDate = formatter.date(from: value) {return parsedDate}
return nil
}
func dayMonthYearDateDescription(date: Date?) -> String? {
guard let date = date else {
return nil
}
formatter.dateFormat = "dd MMMM yyyy"
return formatter.string(from: date)
}

在您的功能中的使用

func calllMessageAPI(){
showLoader(title: "Please Wait...", controller: self)
let params = ["id": self.id] as [String : Any]
guard let token = UserDefaults.standard.string(forKey: "token") else { return }
let headers: HTTPHeaders = ["Authorization": "Bearer (token)"]
print(headers)
AF.request(chatdetail, method: .post, parameters: params, headers: headers).responseJSON(completionHandler: {(response) in
switch response.result{
case.success(let value):
let json  = JSON(value)
print(json)
let data = json["data"]
if data.isEmpty{

}else{
let groupedByLength = Dictionary(grouping: data.array) {
dayMonthYearDateDescription(date: parseDate(value: ($0["msg_timestamp"] as? String)!))
self.messageData.removeAll()
data.array?.forEach({ (mList) in
let m_list = NewMessageModel(message: mList["message"].stringValue, type: mList["type"].stringValue, star_rating: mList["star_rating"].doubleValue, gig_notes: mList["gig_notes"].stringValue, gig_status: mList["gig_status"].stringValue, name: mList["name"].stringValue, from_me: mList["from_me"].stringValue, message_id: mList["message_id"].stringValue, msg_timestamp: mList["msg_timestamp"].stringValue, gig_id: mList["gig_id"].stringValue, id: mList["id"].stringValue, image_url: mList["image_url"].stringValue, gig_date: mList["gig_date"].stringValue, photo: mList["photo"].stringValue)
self.messageData.insert(m_list, at: 0)
})
//Here is usage
let groupedByLength = Dictionary(grouping: data) {
dayMonthYearDateDescription(date: parseDate(value: (($0["msg_timestamp"] as? String)!))) //Getting error here

}
}
self.tblListView.reloadData()
hideLoader(controller: self)
case.failure(let error):
print(error.localizedDescription)
hideLoader(controller: self)
}

})
}

结果:

[Optional("28 december 2020"): [["photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "star_rating": nil, "image_url": Optional(""), "gig_date": Optional("28 Dec 2020"), "gig_id": Optional(50), "name": Optional("Artist"), "type": Optional(2), "message_id": Optional(117), "gig_notes": Optional("Test"), "gig_status": Optional(1), "msg_timestamp": Optional("2020-12-28T04:45:04.000000Z"), "from_me": Optional(1), "id": Optional(34), "message": nil], ["star_rating": nil, "image_url": Optional(""), "name": Optional("Artist"), "msg_timestamp": Optional("2020-12-28T05:04:19.000000Z"), "gig_date": Optional("31 Dec 2020"), "gig_status": Optional(2), "message_id": Optional(118), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "type": Optional(2), "from_me": Optional(1), "gig_notes": Optional("new ro ak"), "id": Optional(34), "gig_id": Optional(62), "message": nil], ["message_id": Optional(119), "type": Optional(2), "from_me": Optional(1), "gig_status": Optional(1), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "gig_id": Optional(62), "msg_timestamp": Optional("2020-12-28T05:11:01.000000Z"), "image_url": Optional(""), "message": nil, "name": Optional("Artist"), "gig_date": Optional("31 Dec 2020"), "star_rating": nil, "id": Optional(34), "gig_notes": Optional("new ro ak")], ["gig_id": Optional(70), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "message_id": Optional(120), "type": Optional(2), "from_me": Optional(1), "gig_notes": Optional("Test"), "name": Optional("Artist"), "msg_timestamp": Optional("2020-12-28T05:13:45.000000Z"), "gig_date": Optional("02 Jan 2021"), "gig_status": Optional(2), "id": Optional(34), "message": nil, "image_url": Optional(""), "star_rating": nil], ["message_id": Optional(121), "image_url": Optional(""), "from_me": Optional(1), "gig_id": Optional(70), "gig_status": Optional(2), "name": Optional("Artist"), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "id": Optional(34), "msg_timestamp": Optional("2020-12-28T05:15:20.000000Z"), "star_rating": nil, "type": Optional(2), "gig_notes": Optional("Test"), "gig_date": Optional("02 Jan 2021"), "message": nil], ["name": Optional("Artist"), "image_url": Optional(""), "gig_notes": Optional("Test"), "id": Optional(34), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "gig_date": Optional("02 Jan 2021"), "message": nil, "type": Optional(2), "msg_timestamp": Optional("2020-12-28T05:23:12.000000Z"), "gig_status": Optional(2), "message_id": Optional(122), "star_rating": nil, "from_me": Optional(1), "gig_id": Optional(70)], ["id": Optional(34), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "message": nil, "name": Optional("Artist"), "msg_timestamp": Optional("2020-12-28T05:26:25.000000Z"), "type": Optional(2), "gig_date": Optional("02 Jan 2021"), "image_url": Optional(""), "star_rating": nil, "message_id": Optional(123), "gig_id": Optional(70), "from_me": Optional(1), "gig_status": Optional(2), "gig_notes": Optional("Test")], ["message": nil, "gig_date": Optional("02 Jan 2021"), "star_rating": nil, "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "msg_timestamp": Optional("2020-12-28T05:32:07.000000Z"), "gig_status": Optional(2), "image_url": Optional(""), "type": Optional(2), "message_id": Optional(124), "name": Optional("Artist"), "gig_notes": Optional("Test"), "from_me": Optional(1), "gig_id": Optional(70), "id": Optional(34)], ["gig_notes": nil, "gig_date": Optional("01 Jan 1970"), "msg_timestamp": Optional("2020-12-28T06:02:42.000000Z"), "gig_status": nil, "id": Optional(34), "gig_id": nil, "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "message_id": Optional(125), "message": nil, "star_rating": nil, "image_url": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609135362.png"), "type": Optional("3"), "name": Optional("Artist"), "from_me": Optional(0)], ["message_id": Optional(126), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "gig_status": nil, "from_me": Optional(0), "gig_notes": nil, "message": nil, "image_url": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609136508.png"), "gig_date": Optional("01 Jan 1970"), "id": Optional(34), "star_rating": nil, "name": Optional("Artist"), "gig_id": nil, "type": Optional("3"), "msg_timestamp": Optional("2020-12-28T06:21:48.000000Z")], ["name": Optional("Artist"), "message_id": Optional(127), "msg_timestamp": Optional("2020-12-28T07:32:50.000000Z"), "star_rating": nil, "gig_id": Optional(70), "gig_status": Optional(1), "type": Optional(2), "message": nil, "gig_notes": Optional("Test"), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "from_me": Optional(1), "id": Optional(34), "gig_date": Optional("02 Jan 2021"), "image_url": Optional("")], ["gig_date": Optional("10 Jan 2021"), "gig_notes": Optional("Test"), "gig_id": Optional(73), "from_me": Optional(1), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "image_url": Optional(""), "star_rating": nil, "name": Optional("Artist"), "gig_status": Optional(1), "message": nil, "id": Optional(34), "message_id": Optional(128), "type": Optional(2), "msg_timestamp": Optional("2020-12-28T10:25:51.000000Z")], ["message_id": Optional(129), "type": Optional(2), "id": Optional(34), "gig_id": Optional(74), "from_me": Optional(1), "gig_status": Optional(1), "gig_date": Optional("19 May 2021"), "message": nil, "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "msg_timestamp": Optional("2020-12-28T10:28:14.000000Z"), "gig_notes": Optional("Tehsgsbs"), "name": Optional("Artist"), "image_url": Optional(""), "star_rating": nil]], Optional("24 december 2020"): [["message": nil, "gig_notes": Optional("Test"), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "message_id": Optional(95), "gig_id": Optional(43), "gig_status": Optional(1), "from_me": Optional(1), "msg_timestamp": Optional("2020-12-24T12:58:58.000000Z"), "id": Optional(34), "gig_date": Optional("25 Dec 2020"), "name": Optional("Artist"), "star_rating": nil, "type": Optional(2), "image_url": Optional("")]], Optional("30 december 2020"): [["gig_id": nil, "gig_notes": nil, "message": Optional("ccgg"), "message_id": Optional(139), "image_url": Optional(""), "name": Optional("Artist"), "msg_timestamp": Optional("2020-12-30T05:09:13.000000Z"), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "type": Optional(0), "from_me": Optional(0), "star_rating": nil, "gig_date": Optional("01 Jan 1970"), "gig_status": nil, "id": Optional(34)], ["type": Optional(0), "from_me": Optional(0), "gig_date": Optional("01 Jan 1970"), "name": Optional("Artist"), "msg_timestamp": Optional("2020-12-30T06:56:41.000000Z"), "gig_status": nil, "message": Optional("Hello"), "image_url": Optional(""), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "message_id": Optional(140), "gig_notes": nil, "id": Optional(34), "gig_id": nil, "star_rating": nil]], Optional("29 december 2020"): [["gig_date": Optional("01 Jan 1970"), "message_id": Optional(136), "photo": Optional("http://vebbuilders.co.uk/ugigs_app/public/uploads/users/34-1609139138.png"), "image_url": Optional(""), "message": Optional("test"), "type": Optional(0), "name": Optional("Artist"), "msg_timestamp": Optional("2020-12-29T08:36:37.000000Z"), "id": Optional(34), "gig_id": nil, "from_me": Optional(0), "gig_notes": nil, "star_rating": nil, "gig_status": nil]]]

相关内容

  • 没有找到相关文章

最新更新