无法在Swift中跨模块访问属性包装器

问题描述 投票:0回答:1

在我的Common模块(框架项目)中,具有[[低于用户默认属性的包装器,

@propertyWrapper public class MyUserDefaultWrapper<T> { let key: String let defaultValue: T public init(_ key: String, defaultValue: T) { self.key = key self.defaultValue = defaultValue } public var wrappedValue: T { get { let suite = UserDefaults(suiteName: "MySuite") return suit?.object(forKey: key) as? T ?? defaultValue } set { let suite = UserDefaults(suiteName: "MySuite") suit?.set(newValue, forKey: key) } } }

在我的App模块(主项目)中,我声明客户端使用MyUserDefaultWrapper

import Common public class MyUserDefaultsCommon: NSObject { @objc static let shared = MyUserDefaultsCommon() @MyUserDefaultWrapper("yearOfBirth", defaultValue: 1980) static var yearOfBirth: Int }

并且使用like,

MyUserDefaultsCommon.shared.yearOfBirth = 2001
它产生构建错误。

未知属性'MyUserDefaultWrapper'

如何摆脱这个问题?

ios swift module build-error property-wrapper
1个回答
1
投票
我使用了您的代码,需要进行一些修改才能使其正常工作。我的最终解决方案如下:
© www.soinside.com 2019 - 2024. All rights reserved.