Core data 在预填充核心数据时遇到问题-我在哪里失败了?

Core data 在预填充核心数据时遇到问题-我在哪里失败了?,core-data,Core Data,我正在跟踪一个过时的团队,该团队使用命令行工具应用程序重新填充核心数据支持的应用程序 到目前为止,我已经完成了配置项目的所有步骤,并准备好保存我的NSManagedObject子类对象。但是,当我试图获取我的currences.json文件的路径时,应用程序失败。该文件已添加到目标,但当我尝试获取路径时,由于调用了fatalError()而崩溃 我不知道为什么我不能访问路径 MyCoreDataStack模型用于与CoreData交互: ///负责管理与核心数据交互的对象。 内部类CoreDat

我正在跟踪一个过时的团队,该团队使用命令行工具应用程序重新填充
核心数据支持的应用程序

到目前为止,我已经完成了配置项目的所有步骤,并准备好保存我的
NSManagedObject
子类对象。但是,当我试图获取我的
currences.json
文件的路径时,应用程序失败。该文件已添加到目标,但当我尝试获取路径时,由于调用了
fatalError()
而崩溃

我不知道为什么我不能访问路径

My
CoreDataStack
模型用于与
CoreData
交互:

///负责管理与核心数据交互的对象。
内部类CoreDataStack{
//标记:-属性
///用于存储包含核心数据的信息的`NSManagedObjectModel`对象的名称。
私有let modelName:String
///与主队列关联的`NSManagedObjectContext`对象。
内部惰性变量mainContext:NSManagedObjectContext={
返回self.storeContainer.viewContext
}()
///封装应用程序核心数据堆栈的“NSPersistentContainer”对象。
私有惰性var storeContainer:NSPersistentContainer={
let container=NSPersistentContainer(名称:self.modelName)
container.loadPersistentStores{(storeDescription,错误)位于
如果let error=错误为N错误{
fatalError(“未解决的错误\(error),\(error.userInfo)”)
}
}
返回容器
}()
//标记:-初始化
///返回“CoreDataStack”的实例。
///-参数modelName:`NSManagedObjectModel`对象的名称,用于存储包含核心数据的信息。
内部初始化(modelName:String){
self.modelName=modelName
}
///尝试通过在“NSManagedObjectContext”中提交对“NSManagedObject”的更改,将项保存到核心数据。
///-参数上下文:应提交其更改的“NSManagedObjectContext”。
内部func saveContext(context:NSManagedObjectContext){
context.perform{
做{
尝试context.save()
}将let错误捕获为NSError{
fatalError(“未解决的错误\(error),\(error.userInfo)”)
}
}
}
}
currencypreload
类是我用来预加载
CoreData
的:

内部最终类currencyPreload{
//标记:-属性
私有let coreDataStack=coreDataStack(型号名称:“CurrencyConverter”)
//标记:-预加载
内部职能(货币){
let path=pathForCurrencyJSON()
让url=urlForCurrencyJSON(from:path)
let data=dataForCurrencyJSON(from:url)
let dictionary=dictionaryOfCurrencies(from:data)
保存货币(来源:字典)
}
//马克:助手
private func pathForCurrencyJSON()->字符串{
guard let path=Bundle.main.path(forResource:“currences”,of type:“json”)else{
fatalError(“货币JSON的路径无效”)
}
返回路径
}
private func urlForCurrencyJSON(来自路径:String)->URL{
返回URL(fileURLWithPath:path)
}
私有func dataForCurrencyJSON(来自url:url)->数据{
做{
返回try数据(contentsOf:url)
}抓住{
fatalError(“无法从货币JSON文件创建数据对象”)
}
}
专用func字典YOFCURRENCE(来自数据:data)->字典{
做{
guard let dictionary=尝试将JSONSerialization.jsonObject(使用:data,选项:[])作为?dictionary else{
fatalError(“无效的JSON对象类型”)
}
返回字典
}抓住{
fatalError(“无效的JSON结构”)
}
}
专用func存储货币(来自字典:字典){
guard let entityDescription=NSEntityDescription.entity(在:coreDataStack.mainContext中,名为“Currency”)else{
fatalError(“无效实体描述”)
}
字典中的(缩写、名称){
让currency=currency(实体:entityDescription,insertInto:coreDataStack.mainContext)
currency.name=名称
currency.缩写=缩写
让filteredSavedCurrencies=savedCurrencies.filter({(filteredCurrency)->Bool-in
return filteredCurrency.缩写==缩写
})
如果filteredSavedCurrencies.count==0{
做{
尝试coreDataStack.mainContext.save()
}抓住{
fatalError(“保存失败”)
}
}
打印(“\(缩写):\(名称)”)
}
}
}
当我在
Main.m
中调用
currencyPreload().preload()
时,就会发生故障;具体而言,在
coredatapreload
中:

private func pathForCurrencyJSON()->字符串{
guard let path=Bundle.main.path(forResource:“currences”,of type:“json”)else{
fatalError(“货币JSON的路径无效”)
}
返回路径
}
找不到
currences.json
的路径


我做错了什么?

我在目标的
构建阶段
菜单中摸索,解决了我的问题

构建阶段
复制文件
下,我取消选中了
currences.json
仅在安装时复制选项,从而解决了问题。现在,正在保存我的
NSManagedObject
s