我的应用程序有一个特性,它存储许多NSMARMARTEDATION对象,在这种情况下是数据集(存储:时间、DeViNeNeNe、StNeNT、DATAONOTS(OrrdEdTeSt))。一个视图控制器是一个表视图VC,列出所有存储的数据集。每一组都有自己的单元格,包含删除按钮、重命名按钮、打开按钮、日期标签和设备名称标签。当我按下“打开”按钮时,我的问题只出现在32位设备上。
按下打开按钮时调用此函数:
func openGraph(graph: NSManagedObject){
let vc = storyboard?.instantiateViewController(withIdentifier: "GraphArchiveSelected") as? GraphArchiveSelectedVC
vc?.selectedGraph = graph
navigationController?.pushViewController(vc!, animated: true)
}
所以我将实例化下一个用来显示数据的vc,并传递选定的数据集(使用变量图和selected graph)。当我得到错误时,当我使用这个函数时:
CoreData: error: Failed to call designated initializer on NSManagedObject class 'NSManagedObject'
它还突出了函数的这一行:
vc?.selectedGraph = graph [Thread 1: EXC_BAD_ACCESS (code=1, address=0x38]
我不确定这为什么适用于64位设备,这可能与<ios 10有关。但是它能够访问单个数据集,因为它在第一VC上列出它们,并且正确地将标签设置为日期等。我有一个想法,那就是我可以将数据存储为数据集中的It64。例如,从1970年起存储为秒的日期。因为在第一个VC上我能看到它正确地加载日期,所以这一定不是问题。我真的不确定设备之间的差异会导致这种情况。
Here is how the DataSets look loaded in the first VC
Here is what the DataSet Entity looks like
Here is what the DataPoint Entity looks like