You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS17+Xcode15下Core Data自定义转换器类找不到警告问题

Core Data自定义值转换器Xcode15/iOS17警告问题解决

问题描述

已实现自定义NSSecureUnarchiveFromDataTransformer用于Core Data实体属性的转换,代码如下:

@objc(CustomSecureUnarchiveFromDataTransformer)
final class CustomSecureUnarchiveFromDataTransformer: NSSecureUnarchiveFromDataTransformer {
    
    override class var allowedTopLevelClasses: [AnyClass] {
        return [NSDateComponents.self]
    }
    
    static let name = NSValueTransformerName(rawValue: String(describing: CustomSecureUnarchiveFromDataTransformer.self))
    
    public static func register() {
        let transformer = CustomSecureUnarchiveFromDataTransformer()
        ValueTransformer.setValueTransformer(transformer, forName: name)
    }
}

已将该转换器指定给Core Data实体MyTestObject的testDate属性,且已在应用启动时调用register()方法注册转换器。应用运行正常,但Xcode15仍持续弹出警告:

/Users/..../CoreData:1:1 no NSValueTransformer with class name
'CustomSecureUnarchiveFromDataTransformer' was found for attribute
'testDate' on entity 'MyTestObject'

针对Xcode15/iOS17的解决步骤

  • 优化转换器注册方式:将原注册代码改为使用静态类注册,替换原register()方法:

    public static func register() {
        ValueTransformer.register(CustomSecureUnarchiveFromDataTransformer.self, forName: name)
    }
    

    这种方式更适配Xcode15对值转换器的检查逻辑,确保编译时能识别到转换器类。

  • 提前执行注册逻辑:确保在Core Data栈初始化之前调用转换器的register()方法。比如在SwiftUI的App结构体初始化中:

    @main
    struct YourApp: App {
        init() {
            CustomSecureUnarchiveFromDataTransformer.register()
        }
        
        var body: some Scene {
            WindowGroup {
                ContentView()
            }
        }
    }
    

    或在UIKit的AppDelegate启动方法中执行注册。

  • 验证模型文件中的转换器名称:打开Core Data模型文件,确认实体属性的Transformer字段完全匹配CustomSecureUnarchiveFromDataTransformer,注意大小写和拼写无错误(Objective-C类名严格区分大小写)。

  • 清理Xcode缓存:执行Cmd+Shift+K清理构建文件夹,随后重启Xcode并重新构建项目,消除缓存导致的旧状态残留。

  • 确保类的Objective-C可见性:确认包含转换器类的Swift文件已添加到target的Compile Sources列表中,且@objc(CustomSecureUnarchiveFromDataTransformer)修饰符未被遗漏,保证类能被Objective-C运行时识别。

内容的提问来源于stack exchange,提问作者Vladimir Amiorkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:15:17