无法在测试中转换导入的实体

时间:2014-10-13 09:16:59

标签: swift casting magicalrecord xctest

我在Swift中使用Core Data有一个非常简单的应用程序。我正在创建一个测试,我想检查从JSON文件中正确导入的实体。我得到" EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)"尝试执行以下操作时出错:

let entities = SampleEntity.MR_findAll() as [SampleEntity]
let entitie = entities[0]

第二行失败了。如果我转换为[NSManagedObject]而不是[SampleEntity],它正在正常工作并获取实体。我之前在Objective-c中做过这个并没有遇到过这样的问题,但现在让它成功是一种挑战。

我已经阅读了其他几个线程,其中人们建议在数据模型定义的类字段中指定应用名称(例如" App.SampleEntity"),但这不起作用。

您可以在此找到完整测试的代码:

import Foundation
import XCTest

class MappingTests: XCTestCase {

    override func setUp() {
        super.setUp()

        MagicalRecord.setDefaultModelFromClass(SampleEntity.classForKeyedArchiver())
        MagicalRecord.setupCoreDataStackWithInMemoryStore()
    }

    override func tearDown() {
        super.tearDown()

        MagicalRecord.cleanUp()
    }

    func testSampleEntitiesAreProperlyImported() {

        let bundle = NSBundle(forClass: MappingTests.classForKeyedArchiver())
        let path = bundle.pathForResource("001", ofType: "json")
        let jsonData = NSData.dataWithContentsOfFile(path!, options: .DataReadingMappedIfSafe, error: nil)
        let jsonArray = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: nil) as NSArray

        for jsonDictionary in jsonArray {
            // This line works properly
            SampleEntity.MR_importFromObject(jsonDictionary)
        }

        let entities = SampleEntity.MR_findAll() as [SampleEntity]
        let entity = entities[0]
    }

}

0 个答案:

没有答案