我有一个Swift应用程序,用于从持久存储中NSFetchedResultsController获取List对象:
let fetchedResultsController: NSFetchedResultsController = ...
var error : NSError?
fetchedResultsController.performFetch(&error)
if let error = error {
NSLog("Error: \(error)")
}
let lists: [List] = fetchedResultsController.fetchedObjects! as [List]
NSLog("lists count = \(lists.count)")
for list: List in lists {
NSLog("List: \(list.description)")
}
Run Code Online (Sandbox Code Playgroud)
它的工作方式与预期的一样,我将List对象描述打印到控制台.我想为我的应用程序编写一些单元测试,所以我创建了扩展的类XCTestCase.代码编译没有问题,测试运行,但不幸的是我无法List在该上下文中获取对象.
我在控制台中得到的只是List对象的数量和致命的错误:
lists count = 59
fatal error: NSArray element failed to match the Swift Array Element type
Run Code Online (Sandbox Code Playgroud)
线路上升:
for list: List in lists {
Run Code Online (Sandbox Code Playgroud)
我很确定我已经正确配置了目标,因为我可以创建List对象并将其插入到托管对象上下文中,而不会出现我的应用程序源代码以及单元测试源代码的问题.我遇到的唯一问题是从测试单元获取.我想知道为什么在模拟器中运行应用程序时提取工作正常,并且在单元测试期间执行时失败. …