【发布时间】:2018-07-05 17:32:49
【问题描述】:
我正在使用 CoreData 在 Xcode 9 中构建一个 iOS 应用程序。我需要能够提供一组默认数据,这些数据可以预先填充应用程序,也可以用于默认设置,以防万一或重置应用程序。
我有以下代码用于使用 plist 导入单个数据数组:
private func preloadData() {
let preloadDataKey = "didPreloadData"
let userDefaults = UserDefaults.standard
if userDefaults.bool(forKey: preloadDataKey) == false {
guard let urlPath = Bundle.main.url(forResource: "PreloadData", withExtension: "plist") else { return }
let backgroundContext = persistentContainer.newBackgroundContext()
persistentContainer.viewContext.automaticallyMergesChangesFromParent = true
backgroundContext.perform {
if let arrayContents = NSArray(contentsOf: urlPath) as? [String] {
do {
for companyName in arrayContents {
let companyObject = Company(context: backgroundContext)
companyObject.name = companyName
}
try backgroundContext.save()
userDefaults.set(true, forKey: preloadDataKey)
} catch {
print(error.localizedDescription)
}
}
}
}
}
但是,我需要导入的数据与两个实体和每个实体的多个属性相关。我该怎么做?
【问题讨论】:
-
您说数据与两个实体相关,但您还没有解释为什么会出现问题?您的核心数据设计是否非常不同,或者维护关系存在问题或......?
-
从我正在使用的示例中没有关系,它是一个单一的数组。但是,在我自己的应用程序中,有两个实体具有属性和它们之间的关系。我不熟悉 Plist 中如何显示此类信息。