首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在应用程序启动时从核心数据获取数据

在应用程序启动时从核心数据获取数据
EN

Stack Overflow用户
提问于 2019-07-14 00:12:21
回答 1查看 113关注 0票数 0

当应用程序启动时,我需要检查Core Data中的项目。这就是我到目前为止所写的,但我不认为这是最佳实践(尽管它似乎是有效的),还有其他方法吗?有更好的方法满足我的需求吗?

代码语言:javascript
运行
复制
func getMealsFromCoreData() -> [Meal]{
    var retrivedMeals = [Meal]()
    let appDelegate = UIApplication.shared.delegate as? AppDelegate
    let managedContext = appDelegate?.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Meal")

    do {

        let result = try managedContext?.fetch(fetchRequest)
        for data in result as! [NSManagedObject]{
            retrivedMeals.append(data as! Meal)
        }

    }catch{
        print("Failed to fetch.")
    }

    return retrivedMeals
}

func uploadMeals(){
    var mealsToUpload = [Meal]()
    let dispatchQueue = DispatchQueue(label: "mealQueue", qos: .background)
    dispatchQueue.async {
        mealsToUpload = self.getMealsFromCoreData()
        for meal in mealsToUpload {
            print(meal)
        }
    }
}

Upload meal应该在获取所有东西(可能不是最好的函数名)后上传到屏幕上。这是我在didFinishLaunchingWithOptions的AppDelegate中写的:

代码语言:javascript
运行
复制
DataManager.manager.uploadReports()

我在getMealsFromCoreData中得到一个紫色警告,告诉我appDelegate应该在主队列上运行。我真的对这种CoreData +将CoreData从主线程移到后台的做法感到困惑。

会非常感谢你的帮手们。我做错了什么吗?这方面的最佳实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-07-15 21:19:49

好的,警告会告诉你做错了什么。

最佳实践取决于用例。但它肯定不会在应用程序启动时获取所有数据。在需要的时候获取数据,需要多少数据就取多少数据(以显示)。如果您愿意的话,也许可以使用NSFetchedResultsController来维护视图的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57020815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档