這是我的結構
struct CommunityListRM: Codable {
let status : Bool?
let communityList: [CommunityList]?
struct CommunityList: Codable {
var id : String?
var user_id : String?
var icon : String?
var nickname : String?
var profile_image : String?
var content : String?
var image_1_url : String?
var image_2_url : String?
var image_3_url : String?
var image_4_url : String?
var image_5_url : String?
var image_ratio1 : String?
var image_ratio2 : String?
var image_ratio3 : String?
var image_ratio4 : String?
var image_ratio5 : String?
var comment_qty : String?
var like_qty : String?
var date : String?
var created_at : String?
var updated_at : String?
var like_it : String?
}
}
我想像 Instagram 提要一樣插入行
var posts : [CommunityListRM.CommunityList] = []
NetworkService().request(.communityList, params, header) { [self] (response: DataResponse<CommunityListRM,AFError>) in
switch response.result {
case .success(let data):
if let nComList = data.communityList {
self.posts.append(contentsOf: nComList)
print("selfpostcount\(self.posts.count)")
self.tableview.beginUpdates()
self.tableview.insertRows(at: [IndexPath(row: self.posts.count - 1, section: 0)], with: .none)
self.tableview.endUpdates()
}
}
}
如果我嘗試此代碼錯誤發生
由于未捕獲的例外“NSInternalInconsistencyException”而終止應用程式,原因:“無效更新:第 0 部分中的行數無效。更新后現有部分中包含的行數 (10) 必須等于該部分中包含的行數更新之前的部分 (0),加上或減去從該部分插入或洗掉的行數(插入 1,洗掉 0)并加上或減去移入或移出該部分的行數(0 移入,0 移出去)。表視圖:<UITableView:0x104125c00;框架 = (0 0; 414 721); clipsToBounds = YES; 自動調整大小 = RM BM; 手勢識別器 = <NSArray: 0x281a62b20>; 層 = <CALayer: 0x2814a0b40>; 內容偏移量:{0, 0};內容大小:{414, 0};調整內容插入:{0, 0, 0, 0};
請幫幫我
uj5u.com熱心網友回復:
首先begin-/endUpdates()對于單個插入/洗掉/移動操作毫無意義。
發生錯誤是因為您將多個專案添加到陣列但只插入一行。您必須指定所有索引路徑。
如果
posts為空,則索引路徑的map所有索引postsself.posts.append(contentsOf: nComList) let indexPaths = self.posts.indices.map{IndexPath(row: $0, section: 0)} self.tableview.insertRows(at: indexPaths, with: .automatic)或者——因為你沒有指定任何影片——只需重新加載表格視圖
self.posts.append(contentsOf: nComList) self.tableview.reloadData()如果
posts不為空,則在追加專案之前和之后計算陣列中的專案以獲取開始和結束索引let startIndex = self.posts.count self.posts.append(contentsOf: newArray) let endIndex = self.posts.count let indexPaths = (startIndex..<endIndex).map{IndexPath(row: $0, section: 0)} self.tableview.insertRows(at: indexPaths, with: .automatic)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/375430.html
