gpt4 book ai didi

ios - 核心数据类的全局变量(坏?好?)

转载 作者:行者123 更新时间:2023-11-28 12:37:26 29 4
gpt4 key购买 nike

我有一个名为 globals.swift 的文件

代码很简单,看起来像这样。

import Foundation
import CoreData
import UIKit

var g_workOrders = [Workorders]()
var g_services = [Service]()

//Shortcut method to get the viewcontext easily from anywhere.
func gm_getContext () -> NSManagedObjectContext {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext

//For unique constraints it will overwrite the data.
context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy

return context
}

我的数据模型非常简单,它是一个工作单,它指的是“服务”,在我的上下文中可以将其视为对工作单的描述。工单只能有一个“服务”。 “服务”可以属于许多工单,但与其中的许多工单没有关系。所以我仍然相信它是一对一的。

g_workOrders[] 和 g_services[] 是我从编辑器菜单 -> createNSManagedSubClasses 创建的 NSManagedSubclasses。

我计划在整个程序中使用这些数组来跟踪工作订单的当前状态并随时获取有关服务的信息。此外,如果我更新全局变量并在上下文中调用保存,它应该保存数据库。 目前这确实有效,但我的问题是......这是好的做法吗? 这样做会导致任何意外行为吗?

最佳答案

您的方法有问题,主要有两个原因:它占用内存,如果数据库发生变化并且您的数组对象不同步,它可能会出现不一致。

您应该在需要此数据的任何地方使用NSFetchedResultsController。 Core Data 将为您进行所有优化,并免费为您提供许多功能(例如,表格 View 的理想选择)。

此外,您的其中一项陈述是矛盾的,可能指向设计缺陷:

A 'service' can belong to many workorders but does not have a relationship to many of them.

这绝对是错误的。如果同一个 Service 可以属于多个 Workorder,它应该与 Workorder 实体具有一对多关系,并且具有反向一对一关系关系。

关于ios - 核心数据类的全局变量(坏?好?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40457519/

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