我有一个tabBarController,在其中一个标签中,我可以选择“收藏夹”标签中要包含的任何文档。
因此,当我转到“收藏夹”选项卡时,应该会显示“收藏夹”文档。
我从CoreData提取了喜欢的文档后称重装:
override func viewWillAppear(_ animated: Bool) {
languageSelected = UserDefaults().string(forKey: "language")!
self.title = "favourites".localized(lang: languageSelected)
// Sets the search Bar in the navigationBar.
let search = UISearchController(searchResultsController: nil)
search.searchResultsUpdater = self
search.obscuresBackgroundDuringPresentation = false
search.searchBar.placeholder = "searchDocuments".localized(lang: languageSelected)
navigationItem.searchController = search
navigationItem.hidesSearchBarWhenScrolling = false
// Request the documents and reload the tableView.
fetchDocuments()
self.tableView.reloadData()
}
fetchDocuments()函数如下:
func fetchDocuments() {
print("fetchDocuments")
// We make the request to the context to get the documents we want.
do {
documentArray = try context.fetchMOs(requestedEntity, sortBy: requestedSortBy, predicate: requestedPredicate)
***print(documentArray) // To test it works ok.***
// Arrange the documentArray per year using the variable documentArrayPerSection.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy"
for yearSection in IndexSections.sharedInstance.allSections[0].sections {
let documentsFilteredPerYear = documentArray.filter { document -> Bool in
return yearSection == formatter.string(from: document.date!)
}
documentArrayPerSection.append(documentsFilteredPerYear)
}
} catch {
print("Error fetching data from context \(error)")
}
}
从语句print(documentArray)中,我看到该函数更新了内容。但是,tableView中没有重新加载文档。
如果我关闭该应用程序并再次将其打开,则它将更新。
不知道我在做什么错!!
答案 0 :(得分:2)
我假设在完成所有数据处理之前调用Private Sub myItem_close(Cancel As Boolean)
Dim F As Outlook.MAPIFolder
EventsDisable = True
If TypeOf myItem Is Outlook.mailitem Then
Set F = myItem.Parent
If F = Session.GetDefaultFolder(olFolderInbox) Then
Set F = Application.Session.PickFolder
myItem.Move F
End If
EventsDisable = False
End Sub
。要解决此问题,您必须在获取完成后调用完成处理程序,然后才能更新tableView。
reloadData()
并这样称呼它:
func fetchDocuments(_ completion: @escaping () -> Void) {
do {
// Execute all the usual fetching logic
...
completion()
}
catch { ... }
}
答案 1 :(得分:2)
问题是您总是要追加到documentArrayPerSection
却从未清除它,所以我想数组总是越来越大,但是只使用了tableView的数据源所请求的数组的开头。我自己去过几次。