我有一個名爲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。
我計劃在整個程序中使用這些數組來跟蹤工作訂單的當前狀態並隨時獲取服務的相關信息。此外,如果我更新全局變量並調用保存上下文,它應該保存數據庫。 這目前工作,但我的問題是...這是一個很好的做法?這樣做會導致任何意想不到的行爲嗎?
感謝您的回答,我有這種感覺,我可能會以錯誤的方式去做,但不知道爲什麼......這將顯示您所得到的是根據需要通過coreData命令訪存數據,而不是嘗試使用全局變量來獲取數據。我想我會嘗試這種方法,但這確實提出了一個有趣的問題。對於每個表格,我都想創建一個對'對象'的引用,這個對象將某些狀態保存爲'開'或'關'。我在考慮把它作爲一個類變量放在tablecontroller中,我想知道這是否會導致相同的問題。 –
我之所以說服務可以屬於許多工作訂單,是因爲從技術上講,許多工單是指服務模板,但服務模板一次只能指向一個工單。這件事對我來說一直困擾着做它的正確方式:P。在我的腦海裏,我想NSManagedSubclass會在服務上擁有這個數組變量,這對於工作順序應該只有一個變量是沒有意義的。那有意義嗎? –
聽起來像許多人的經典之作,其中一項服務連接到多個工單。您應該在工作順序中擁有一個服務變量,並且在這些屬性之間建立一個具有連接的workOrders數組。 – PeejWeej