是否可以在不重命名整个实体的情况下重命名 coredata 访问器?

Can you rename the coredata accessors without renaming the entire entity?

提问人:TFesmire 提问时间:3/4/2023 更新时间:3/4/2023 访问量:50

问:

我正在尝试将我的应用程序的存档上传到 App Store Connect,但一直遇到 .The app references non-public selectors core data site:developer.apple.com

我已将问题范围缩小到为我的两个实体生成的 CoreData 访问器,以及 .问题在于,将这些项之一添加到一对多关系的访问器似乎与非公共 Objective-C 函数发生冲突。这是有关类似问题的帖子的链接。FolderItem

AppStore被拒绝:使用私信是指我自己的方法

例如,addItemsObject 是添加的非公共选择器之一。

extension Folder {
  
  @objc(addItemsObject:)
  @NSManaged public func addToItems(_ value: Item)
  
  @objc(removeItemsObject:)
  @NSManaged public func removeFromItems(_ value: Item)
  
  @objc(addItems:)
  @NSManaged public func addToItems(_ values: NSSet)
  
  @objc(removeItems:)
  @NSManaged public func removeFromItems(_ values: NSSet)
  
}

将 @objc(addItemsObject:) 重命名为 @objc(addItemsObject_1:) 可修复此问题并允许存档验证和上传,但它会因错误而中断应用程序。Unrecognized selector addItemsObject_1

是否无论如何都可以重命名此访问器而不必重命名我的实体?

swift objective-c xcode 核心数据

评论

1赞 Tom Harrington 3/4/2023
何时出现“无法识别的选择器”消息?你的代码当时在做什么?
0赞 Willeke 3/4/2023
Objective-C 选择器是从关系名称生成的。items
0赞 Joakim Danielson 3/4/2023
没有理由需要重命名该关系,也许您需要做的就是清理生成文件夹,并可能删除 DerivedData 中的内容。
0赞 TFesmire 3/8/2023
@TomHarrington 当我在重命名访问器后尝试将项目添加到一对多关系中时,会出现“无法识别的选择器”消息。但是,重命名它们后,应用程序会正确验证。这使我推断重命名访问器是解决方案,但如何去做是一个可能需要更多的 Objective-C 的问题。
0赞 TFesmire 3/8/2023
@JoakimDanielson我认为你是对的,我不应该重命名。我无法通过清理构建文件夹或删除派生数据来使警告消失。该应用程序已上传到 App Store Connect,因此它可能暂时只是一个警告。

答: 暂无答案