代码之家  ›  专栏  ›  技术社区  ›  Mumphus

32位IOS设备的CoreData错误

  •  0
  • Mumphus  · 技术社区  · 6 年前

    我的应用程序有一个特性,它存储许多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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mumphus    6 年前

    问题是selectedGraph被宣布为这样:

    var selectedGraph = GraphDataSet()
    

    应该是这样的

    var selectedGraph: NSManagedObject!