Swift/CoreData:-[:]:发送到实例的无法识别的选择器
Posted
技术标签:
【中文标题】Swift/CoreData:-[:]:发送到实例的无法识别的选择器【英文标题】:Swift/CoreData: -[:]: unrecognized selector sent to instance 【发布时间】:2021-04-12 13:05:58 【问题描述】:我有一个依赖 CoreData 的小型 ios 应用程序。 我目前有两个实体,“Product”和“StorageLocation”。 它们之间是一对多的关系。 我手动生成了类;模型编辑器也会显示正确的类名。
当尝试保存包含与“StorageLocation”关系的新“产品”时,我收到此错误:
-[StorageLocation addProductsObject:]:无法识别的选择器发送到实例 0x60000389d280"
生成的NSManagedObject类如下:
import Foundation
import CoreData
extension StorageLocation
@nonobjc public class func fetchRequest() -> NSFetchRequest<StorageLocation>
return NSFetchRequest<StorageLocation>(entityName: "StorageLocation")
@NSManaged public var id: UUID?
@NSManaged public var name: String?
@NSManaged public var products: NSSet?
// MARK: Generated accessors for products
extension StorageLocation
@objc(addProductsObject:)
@NSManaged public func addToProducts(_ value: Product)
@objc(removeProductsObject:)
@NSManaged public func removeFromProducts(_ value: Product)
@objc(addProducts:)
@NSManaged public func addToProducts(_ values: NSSet)
@objc(removeProducts:)
@NSManaged public func removeFromProducts(_ values: NSSet)
extension StorageLocation : Identifiable
正如错误所说,问题是我这样调用的方法“addToProducts”:
let newItem = Product(context: viewContext)
newItem.id = id
newItem.name = name
newItem.qty = Int32(actualQty)
newItem.expDate = expDate
location.addToProducts(newItem)
我还检查了模型是否与类匹配,没有发现错误。
有什么想法/提示吗?
谢谢 马可
【问题讨论】:
核心数据模型中两个实体之间的关系名称是什么? 这是我的模特:i.imgur.com/ZOtxjz0.png 呃?抱歉,我没有看到它们不匹配的地方 你还有文件 StoregaLocation+CodeDataClass.swift 吗? 我发布的是文件 StorageLocation+CoreDataProperties.swift 【参考方案1】:很难确定,但由于您手动生成了文件,因此它可能没有被添加到应用程序目标中。这意味着代码存在但没有被编译为应用程序的一部分。试试这个:
-
在窗口左侧的文件导航器中单击文件。
打开右侧的“文件检查器”选项卡。如果你按下 cmd-opt-1,就会得到这个。
查看显示“目标成员资格”的检查器。这应该列出应用和所有测试目标,以及应用扩展(如果有)。
确保在目标成员列表中选中您的应用名称。
如果它没有被检查,而你检查它,你的代码可能会工作。
【讨论】:
“不幸的是”,添加了目标会员;我列出并检查了我的应用程序。谢谢! 进一步调试后看到这个错误:#5 0x000000010c22e13a in closure #1 in AddView.addProduct(id:name:actualQty:expDate:location:)
进一步调试后看到这个错误以上是关于Swift/CoreData:-[:]:发送到实例的无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章
Swift3 CoreData - fetchResultsController
iOS - Swift CoreData 中的 ManagedObjectContext 为零
在哪里放置 persistentStoreDescriptions ?在 Swift3 Coredata 样板堆栈