gpt4 book ai didi

ios - UITableView 无法在首次启动时从核心数据中获取

转载 作者:行者123 更新时间:2023-11-28 06:55:40 25 4
gpt4 key购买 nike

所以我构建了一个应用程序来从 Web API 读取一些 JSON 数据。然后它解析 JSON 并将结果存储到核心数据中。在我的 UITableViewControllerviewDidLoad 中,我尝试读取 JSON 并将结果保存到 Core Data。然后在 viewWillAppear 中,我尝试从 Core Data 中获取数据并将其保存到用户数组中。

//parse JSON and save result to CoreData
let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)

person.setValuesForKeysWithDictionary([...])

do {
try managedContext.save()
users.append(person)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}


override func viewWillAppear(animated: Bool) {
fetchData()
}

// fetch from Core Data and save to users array
class func fetchData() {

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "User")

do {
let res = try managedContext.executeFetchRequest(fetchRequest)
users = res as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}

// code for refreshing
func refresh() {
if isConnectedToNetwork() {
// run some code to read newest data from Web
self.tableView.reloadData()
}

self.refreshControl!.endRefreshing()
}

现在我有一个非常奇怪的问题,当应用程序第一次启动时(在模拟器和我的 iPhone 上),tableview 总是空的(但它会在通过下拉刷新后填充数据)。但是当我再次尝试构建并运行它时,一切看起来都正常。请注意,我已尝试将 self.tableView.reloadData() 添加到 viewWillAppearviewDidLoad 并且都在 dispatch_async 阻止和外部。有人可以告诉我发生了什么事吗?

最佳答案

当您第一次在 viewDidLoad 中运行您的应用程序时,您从 url 放置数据并解析然后插入核心数据,同时在您的 viewWillAppear 中将被调用,因为您的数据仍未插入核心数据中,因此您将看到空的表格 View 。您可以在插入数据后调用 fetchData() 和 self.tableView.reloadData(),第一次运行 fix。

关于ios - UITableView 无法在首次启动时从核心数据中获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33728961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com