一个用于使对象遵循 NSSecureCoding 而无需所有样板代码的小工具。您的对象变得可序列化 并且您不必编写一大堆繁琐且难以维护的编码/解码代码。
这并不是要替换所有对象中的 NSCoding 代码,而是更多地用于简单、不太复杂的数据模型对象。
将这些添加到您的模型中会使其(尽可能)序列化所有属性。
它在运行时实际更改类以遵循 NSSecureCoding
。
它不会尝试覆盖现有的 NSCoding
实现_ENDPOINT,并且它只会修改应用程序包中的库类。
注意 这有点实验性。
假设你有这些模型
@interface SubModel : NSObject
@property (nonatomic, strong) NSNumber *aNumber;
@property (nonatomic, strong) NSValue *aValue;
@end
@interface TestModel : NSObject
@property (nonatomic, strong, readonly) NSString *suchReadOnly;
@property (nonatomic, strong) NSString *aString;
@property (nonatomic, strong) NSDate *aDate;
@property (nonatomic, strong, getter=getTheURL) NSURL *anURL;
@property (nonatomic, assign, setter=setTheBool:) BOOL aBool;
@property (nonatomic, assign) NSInteger anInteger;
@property (nonatomic, strong) SubModel *subModel;
@property (nonatomic, strong) NSArray *things;
@property (nonatomic, strong) NSDictionary *reference;
@end
如你所见,它们不遵循 NSCoding
。
在他们实现中添加 II_AUTO_NSCODING()
可以确保这一点。它会自动序列化它能够序列化的所有属性。
@implementation TestModel
II_AUTO_NSCODING()
@end
@implementation SubModel
II_AUTO_NSCODING()
@end
您甚至可以使其在编码过程中递归地为每个“不合规”的类做同样的事
但这更实验性。
II_AUTO_NSCODING(AUTO_INJECT_CHILDREN)
😉
😉
此代码遵循 MIT 许可证。