У меня есть массив данных, смоделированный с использованием Structs
и соответствующий как Codable
и Equatable
enum FeedItemType: String, Codable {
case selling = "ITEM_FOR_SALE"
case facebook = "FACEBOOK_POST"
case tweet = "TWITTER_POST"
}
enum FeedItemStatus: String, Codable {
case created = "CREATED"
}
struct FeedItem: Codable, Equatable {
var item: FeedItemContent
var liked: Bool
var commented: Bool
private enum CodingKeys: String, CodingKey {
case liked, commented
case item = "feedItem"
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.item = try container.decode(FeedItemContent.self, forKey: .item)
self.liked = try container.decode(Bool.self, forKey: .liked)
self.commented = try container.decode(Bool.self, forKey: .commented)
}
}
Я перебираю массив этого и заполняю UITableView
содержимымиз FeedItemContent
, что само по себе также Codable
и Equatable
.
Поскольку этот список данных разбит на страницы и может обновляться на стороне сервера при получении новых данных, а не перезагружать всю UITableView
Iхотелось бы вносить изменения только в строки, которые отличаются, или добавлять новые строки, отсутствующие в исходной коллекции.
Исходя из фона JS, я обычно просто распространяю старый объект и новый объект на новыйпустой объект и пусть React выяснит, что изменилось.
Я не уверен, как этого добиться в Swift / iOS.