NScoder objective-c 运行 时间
NScoder objective-c run time
NSCoder *coder;
coder=[[NSCoder alloc]init];
[coder encodeObject:@"value" forKey:@"frame"];
错误
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -encodeObject:forKey: cannot be sent to an abstract object of class NSCoder: Create a concrete instance!`
这在 运行 期间中断 time.can 任何人帮助我找到我做错了什么?
需要创建一个模型class,并且在这个模型class中,需要实现一个NSCodingProtocol
例如书 Class
Book.h
@interface Book : NSObject<NSCoding>
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *author;
@end
Book.m
- (id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super init]) {
self.title = [aDecoder decodeObjectForKey:@"name"];
self.author = [aDecoder decodeObjectForKey:@author"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeObject:_author forKey:@"author"];
}
NSCoder *coder;
coder=[[NSCoder alloc]init];
[coder encodeObject:@"value" forKey:@"frame"];
错误
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -encodeObject:forKey: cannot be sent to an abstract object of class NSCoder: Create a concrete instance!`
这在 运行 期间中断 time.can 任何人帮助我找到我做错了什么?
需要创建一个模型class,并且在这个模型class中,需要实现一个NSCodingProtocol
例如书 Class
Book.h
@interface Book : NSObject<NSCoding>
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *author;
@end
Book.m
- (id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super init]) {
self.title = [aDecoder decodeObjectForKey:@"name"];
self.author = [aDecoder decodeObjectForKey:@author"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeObject:_author forKey:@"author"];
}