我必须在我的应用程序中实现评论和回复系统。我正在从 API 获取数据,但我不明白如何执行此操作,因为我以前没有做过类似的事情。我知道我必须为这种类型的系统使用两个不同的单元格,但我不知道如何过滤评论和回复的数据并将它们显示在各自的单元格中。
这是我的 JSON:
[
{
"firstName": "Mark",
"lastName": "King",
"profilePic": "avatar2 - Copy - Copy.jpg",
"reviewId": 54,
"userId": 4,
"serviceProviderId": 0,
"rating": 0,
"description": "Thank You...",
"isDeleted": false,
"parentReviewId": 53,
"createdDate": "2018-05-08T12:32:43.033",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 62,
"startDate": "2018-05-08T12:29:00",
"endDate": "2018-05-08T14:29:00",
"serviceName": "Security",
"businessId": 0,
"businessProfilePic": ""
},
{
"firstName": "Satya Indra",
"lastName": "varada",
"profilePic": "3354757569.jpg",
"reviewId": 53,
"userId": 9,
"serviceProviderId": 0,
"rating": 4,
"description": "nice service...",
"isDeleted": false,
"parentReviewId": 0,
"createdDate": "2018-05-08T12:31:44.313",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 62,
"startDate": "2018-05-08T12:29:00",
"endDate": "2018-05-08T14:29:00",
"serviceName": "Security",
"businessId": 0,
"businessProfilePic": ""
},
{
"firstName": "Mark",
"lastName": "King",
"profilePic": "avatar2 - Copy - Copy.jpg",
"reviewId": 52,
"userId": 4,
"serviceProviderId": 0,
"rating": 0,
"description": "sorry for the trouble",
"isDeleted": false,
"parentReviewId": 9,
"createdDate": "2018-05-07T11:52:23.81",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 16,
"startDate": "2018-04-24T11:30:00",
"endDate": "2018-04-24T12:30:00",
"serviceName": "Cleaning",
"businessId": 2,
"businessProfilePic": "logo-home.png"
},
{
"firstName": "James",
"lastName": "Miller",
"profilePic": "avatar.jpg",
"reviewId": 9,
"userId": 7,
"serviceProviderId": 0,
"rating": 2,
"description": "bad",
"isDeleted": false,
"parentReviewId": 0,
"createdDate": "2018-04-24T23:59:06.357",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 16,
"startDate": "2018-04-24T11:30:00",
"endDate": "2018-04-24T12:30:00",
"serviceName": "Cleaning",
"businessId": 2,
"businessProfilePic": "logo-home.png"
},
{
"firstName": "Mark",
"lastName": "King",
"profilePic": "avatar2 - Copy - Copy.jpg",
"reviewId": 2,
"userId": 4,
"serviceProviderId": 0,
"rating": 0,
"description": "Thank you",
"isDeleted": false,
"parentReviewId": 1,
"createdDate": "2018-04-20T14:57:29.073",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 2,
"startDate": "2018-04-25T00:00:00",
"endDate": "2018-04-26T09:00:00",
"serviceName": "Security",
"businessId": 0,
"businessProfilePic": ""
},
{
"firstName": "James",
"lastName": "Miller",
"profilePic": "avatar.jpg",
"reviewId": 1,
"userId": 7,
"serviceProviderId": 0,
"rating": 4,
"description": "Great",
"isDeleted": false,
"parentReviewId": 0,
"createdDate": "2018-04-20T14:56:57.34",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 2,
"startDate": "2018-04-25T00:00:00",
"endDate": "2018-04-26T09:00:00",
"serviceName": "Security",
"businessId": 0,
"businessProfilePic": ""
}
]
这里所有的字典都代表一个数组中的评论和评论。不同之处在于任何评论的 bookingId 将与回复相同,评论的 reviewId 将等于回复的 parentReviewId。如果已经有回复,则应在下方显示相应的评论,如果没有回复,我们应该能够通过单击评论单元格中的回复按钮来添加它。这就是这个概念,我真的试过了,我做不到。希望你们能帮助我做到这一点..提前感谢您的帮助..
Best Answer-推荐答案 strong>
API 响应的最佳实践应该是,回复应该在评论字典中。喜欢:
{
"firstName": "James",
"lastName": "Miller",
"profilePic": "avatar.jpg",
"reviewId": 9,
"userId": 7,
"serviceProviderId": 0,
"rating": 2,
"description": "bad",
"isDeleted": false,
"parentReviewId": 0,
"createdDate": "2018-04-24T23:59:06.357",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 16,
"startDate": "2018-04-24T11:30:00",
"endDate": "2018-04-24T12:30:00",
"serviceName": "Cleaning",
"businessId": 2,
"businessProfilePic": "logo-home.png"
"replies": [
{
"firstName": "Mark",
"lastName": "King",
"profilePic": "avatar2 - Copy - Copy.jpg",
"reviewId": 52,
"userId": 4,
"serviceProviderId": 0,
"rating": 0,
"description": "sorry for the trouble",
"isDeleted": false,
"parentReviewId": 9,
"createdDate": "2018-05-07T11:52:23.81",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 16,
"startDate": "2018-04-24T11:30:00",
"endDate": "2018-04-24T12:30:00",
"serviceName": "Cleaning",
"businessId": 2,
"businessProfilePic": "logo-home.png"
},
{
"firstName": "Mark",
"lastName": "King",
"profilePic": "avatar2 - Copy - Copy.jpg",
"reviewId": 60,
"userId": 4,
"serviceProviderId": 0,
"rating": 0,
"description": "sorry for the trouble new",
"isDeleted": false,
"parentReviewId": 9,
"createdDate": "2018-05-07T11:52:23.81",
"modifiedDate": "0001-01-01T00:00:00",
"bookingId": 16,
"startDate": "2018-04-24T11:30:00",
"endDate": "2018-04-24T12:30:00",
"serviceName": "Cleaning",
"businessId": 2,
"businessProfilePic": "logo-home.png"
}
]
}
但在当前情况下,您可以检查 parentReviewId 。如果为0,则为回复,否则为评论。你可以这样:
let responseArray = [[String: Any]]() // This is array fro your question
// Extract commentArray
let commentArray = responseArray.filter( { Int(exactly: $0["parentReviewId"] as! NSNumber) == 0 } )
// Load updatedResponseArray with relpies into it
var updatedResponseArray = [[String: Any]]()
for itemDict in commentArray {
let reviewId = Int(exactly: itemDict["reviewId"] as! NSNumber) ?? 0
let replies = responseArray.filter( { Int(exactly: $0["parentReviewId"] as! NSNumber) == reviewId } )
var dict = itemDict
dict["replies"] = replies
updatedResponseArray.append(dict)
}
print(updatedResponseArray)
现在,您可以使用此 updatedResponseArray ,字典中的主要详细信息是评论,并且您在 replies 键中有对该评论的相关回复。
关于ios - 如何在 iOS swift 中实现评论和回复系统,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/50312995/
|