我正在使用objective开发一个macOS应用程序。
我试图在核心数据中保存一个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:方法中放置了一个断点,它从未运行过。我使用了一些工具,发现元素成功地存储在我的核心数据中,因此它的编码过程没有问题。
发布于 2019-01-20 03:12:48
我把它修好了,这是解决办法:
我的对象是'Address‘(注意:它不是NSArray)
Address.h
@interface Address : NSObject <NSSecureCoding>
@property (nonatomic, strong) NSString *street;
@property (nonatomic, strong) NSString *city;
@endAddress.m
@implementation Address
- (id) initWithCoder:(NSCoder *)aDecoder
{
self = [self init];
if (self == nil)
{
return nil;
}
self.street = [aDecoder decodeObjectOfClass:[Address class] forKey:@"street"];
self.city = [aDecoder decodeObjectOfClass:[Address class]
forKey:@"city"];
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.street forKey:@"street"];
[encoder encodeObject:self.city forKey:@"city"];
}
+ (BOOL)supportsSecureCoding
{
return YES;
}Archive.h
@property (nonatomic, strong) Address *address;Archive.m
UserDBO *userDBO = [[UserDBO alloc] init];//档案
NSError *error = nil;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.address requiringSecureCoding:YES error:&error];
if(error)
{
NSLog(@"archivedDataWithRootObject: %@", error);
}
userDBO.address = data; // UnArchive
Address *address = [NSKeyedUnarchiver unarchivedObjectOfClass:[Address class] fromData:userDBO.address error:&error];
if(error)
{
NSLog(@"unarchivedObjectOfClass: %@", error);
}UserDBO.h
@property (nonatomic, strong) NSData *address;https://stackoverflow.com/questions/53172018
复制相似问题