[英]What would be more efficient for limiting array capacity in swift?
因此,我偶然發現了這里的喜憂參半。 我的應用程序的增長速度超出了預期,我注意到性能開始下降。 這是一種社交媒體,用戶數據存儲在Firebase中。 在viewDidLoad上,我將用戶數據解析為表視圖。 我有數百條記錄必須從Firebase加載到設備上,現在我想限制“表視圖”(100)中顯示的用戶數量。
因此,對於我的問題:
哪個是更好的性能選擇? 只是簡單地將numberOfRowsInSection限制為100? 或刪除索引100之后我的用戶數組中的所有元素?
如果是第二種選擇,我該怎么做呢? 不幸的是,我最初需要存儲在數組中的用戶數據,以便可以對它們進行排序,但是在排序之后,我想在某個索引之后刪除數組中的每個元素。 (我知道這看起來很奇怪,我將在稍后修復代碼並使之更加平滑)。
謝謝!
理想情況下,您希望在服務器端處理此問題。 因此,當您為用戶數據調用端點時,它將處理排序,並且最多返回100個項目。
如果您不想執行此操作,而只是在兩個選項之間進行選擇,則建議您在排序后不需要的情況下刪除100個元素。 根據每個對象的大小,這可能會釋放相當大的內存。 要在100后輕松移除物品,您可以使用以下方法:
myArray.removeRange(100..<myArray.count)
一般而言,只要您有一個由某種昂貴的數據存儲(帶有任意數量的條目)支持的表視圖或集合視圖(無論是數據庫還是REST調用或其他任何形式),您都希望對加載進行分頁並在以下情況獲得更多記錄用戶滾動。 例如,當您轉到Facebook feed時,您當然不希望加載所有Facebook帖子。 僅加載最新的提要項,並且在滾動時,視圖控制器會請求服務器提供更多數據,因此您可以無限滾動。
func refresh() {
if isLoading == false {
isEndOfData = false
currentPage = 0
loadPage(currentPage)
}
}
func loadPage(_ page: Int) {
isLoading = true
Notification.getPage(currentPage, pageSize: pageSize) { error, notifications in
//Handle API call here
}
}
func loadNextPage() {
if isLoading == false && isEndOfData == false {
currentPage += 1
loadPage(currentPage)
}
}
//MARK: UIScrollViewDelegate
extension NotificationViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentOffset = scrollView.contentOffset.y
let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height
if (maximumOffset - currentOffset) <= GlobalConstants.paginationScrollOffset {
loadNextPage()
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.