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
}
私のデータモデルは、私のコンテキストでWorkOrderは説明のためのものと考えることができる「サービス」を指し、そのWorkOrderは非常に簡単です。作業員は「サービス」を1つしか持てません。 「サービス」は多くの作業項目に属することができますが、それらの多くに関係はありません。だから私はまだ1対1の私は信じています。
g_workOrders []とg_services []は、エディタメニュー - > createNSManagedSubClassesから作成したNSManagedSubclassesです。
これらの配列をプログラム全体で使用して、現在の作業オーダーの状態を追跡し、いつでもサービスに関する情報を取得する予定です。さらに、グローバル変数を更新し、コンテキストでsaveを呼び出すと、データベースを保存するはずです。 これは現在動作しますが、私の質問は...この良い習慣ですか?このようにして予期しない動作が発生することはありますか?
あなたの答えをありがとう、私はこれが間違った方向に行くかもしれないと感じていたが、確かではなかった...それはあなたが得ているように見えるだろうグローバル変数を使用する代わりに、coreDataコマンドとフェッチを介して必要なデータにアクセスすることができます。私はそのアプローチを試みると思うが、これは興味深い質問を提起する。テーブルごとに、あるオブジェクトを 'on'または 'off'のように保持する 'オブジェクト'への参照を作成したかったのです。私はそれをtablecontrollerにクラス変数として入れることを考えていましたが、これが同じ問題を引き起こすかどうかは疑問です。 –
サービスが多くの作業指示に属することができる理由は、技術的に多くの作業指示がサービステンプレートを参照しているためですが、サービステンプレートは一度に1つの作業指示のみを参照するためです。このようなことは、私がそれを行う正しい方法を常に混乱させていました。私の頭の中では、NSManagedSubclassがサービス上でこの配列変数を持っていると思っていましたが、それは意味をなさないでしょう。それは理にかなっていますか? –
1つのサービスが複数の作業オーダーに接続されている、古典的な1対多のようなサウンドです。あなたは、仕事の順序でサービス変数を持っている必要がありますし、これらの属性間の接続で働いている仕事の配列の配列。 – PeejWeej