gpt4 book ai didi

ios - Swift 无法在 Xcode 测试中测试核心数据?

转载 作者:IT王子 更新时间:2023-10-29 05:14:10 25 4
gpt4 key购买 nike

我正在开发一个使用核心数据的 iOS 项目。我正在使用快速。核心数据堆栈设置正确,一切似乎都很好。我为名为 TestEntity 的实体 (NSManagedObject) 创建了一个类。该类看起来像这样:

import UIKit
import CoreData

class TestEntity: NSManagedObject {
@NSManaged var name: NSString
@NSManaged var age: NSNumber
}

所以,然后我尝试使用这行代码在代码中插入一个新的 TestEntity:

let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity

然后我得到这个错误:

enter image description here

我看到一些关于堆栈溢出的答案说我需要担心模块名称。然后我在文档中查看了它: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WritingSwiftClassesWithObjective-CBehavior.html

然后我进入了 TestEntity 的核心数据实体,并在类字段中输入了 myAppName.TestEntity

当我运行应用程序时,这一行:

let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity

仍然给我同样的错误。

我还有什么地方做错了吗?

编辑:因此,我能够通过将 TestEntity NSManagedObject 类更改为以下内容来使应用程序不再崩溃:导入 UIKit导入核心数据

@objc(TestEntity) class TestEntity: NSManagedObject {
@NSManaged var name: NSString
@NSManaged var age: NSNumber
}

因此,我在其中添加了@objc(TestEntity)。无论是否在核心数据数据模型检查器中的 TestEntity 类名称前添加 appName,这都适用。

这行得通,但是,当我运行测试时,这一行仍然崩溃:

let te: TestEntity = NSEntityDescription.insertNewObjectForEntityForName("TestEntity", inManagedObjectContext: ctx) as TestEntity

所以我发现这是其他人的问题: How to access Core Data generated Obj-C classes in test targets?

我们如何让核心数据快速用于测试。我没有在应用程序目标中使用桥接 header ,一切都很好。测试目标仍然崩溃。

如何修复测试目标,使其能够运行核心数据测试?

最佳答案

使用 Xcode 7 和 @testable,您应该不再需要更新 managedObjectClassName 或使用其他 hack。这是我为让它在 Xcode 7.2 中工作所做的工作。

  1. 设置测试目标主机应用程序并选中“允许测试主机应用程序 API”。

enter image description here

  1. 确保没有您的常规类具有指向测试目标的目标成员资格。只有带有单元测试代码的类才应设置为测试目标。

enter image description here

  1. @testable 行添加到所有测试类的顶部:
import XCTest
@testable import MyApp

class MyAppTests: XCTestCase {
}

如果您仍然遇到问题,您可能想尝试这些额外的提示:https://forums.developer.apple.com/message/28773#28949

我和这个打了一段时间,所以我希望它能帮助其他人。

关于ios - Swift 无法在 Xcode 测试中测试核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24662780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com