【发布时间】:2018-11-06 12:34:02
【问题描述】:
我正在使用 Objective-C 开发一个 macOS 应用程序。
我试图在 Core Data 中保存一个 NSArray 对象。我写
- (id)reverseTransformedValue:(id)value
{
return [NSKeyedUnarchiver unarchivedObjectOfClass:[NSArray class] fromData:value error:nil];
}
在继承 NSValueTransformer 的类中。
并且我的 NSArray 对象中的元素之一不是主要类型(具有名为 courseName 和 courseInfos 的属性),所以我符合这个元素的类。在这堂课中,我写道:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [[self class] new];
if (self = [super init])
{
self.courseName = [aDecoder decodeObjectForKey:@"courseName"];
self.courseInfos = [aDecoder decodeObjectForKey:@"courseInfos"];
}
return self;
}
当我的应用程序运行时,会调用 reverseTransformedValue: 方法,并且我的 NSArray 对象中除该特殊非主元素之外的所有元素都将被解码。我在该特殊元素的类中的 initWithCoder: 方法中放置了一个断点,但它永远不会运行。我使用一些工具,发现元素成功存储在我的核心数据中,所以它的编码过程没有问题。
【问题讨论】:
标签: objective-c cocoa core-data