在我必须做的一个项目中,我正在使用外部附件和框架ExternalAccessory。
(我可以连接到一个,也是唯一一个附件)。
连接很简单,发送数据并不是很困难。
我想做的一件事是将最后连接的设备存储在内存中,尝试在应用程序重新启动时自动重新连接到它。(离开后,所以在第一次发射之后。)
因此,我的问题是,EAAccessory是一个自定义类对象,不能存储到NSUserDefaults中。
我看到了这个问题来存储自定义对象:
How to store custom objects in NSUserDefaults
所以我会用它创建一个NSData,但是没有成功,因为EAAccessory没有实现encodeWithCoder和initWithCoder方法.
知道吗?用这种方式还是另一种方式来处理?
发布于 2012-07-05 15:39:42
您应该在逻辑上/以有意义的方式将EAAcessory实例的所有重要和持久属性存储在NSDictionary中,并将此字典存储在NSUserDefaults中。然后,您必须重读此字典并执行逆转换(指定输入EAAccessory实例、设置其属性等)。
发布于 2012-07-05 15:49:39
我认为您可以将缺失的方法实现为自定义的EAAccessory类别。也许是这样的:
*** interface
@interface EAAccessory (CodecAdditions)
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
@end
*** implementation
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeInt:[self name] forKey:@"name"];
[aCoder encodeInt:[self manufacturer] forKey:@"manufacturer"];
...
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self.name = [aDecoder decodeIntForKey:@"name"];
self.manufacturer = [aDecoder decodeIntForKey:@"manufacturer";
...
return self;
}https://stackoverflow.com/questions/11347559
复制相似问题