gpt4 book ai didi

ios - 将 UITouchesEvent 编码为 NSData 时出错

转载 作者:行者123 更新时间:2023-11-29 13:19:19 27 4
gpt4 key购买 nike

我有一个包含一些对象的 NSDictionary:一个 UITouches 的 NSSet、一个 UIEvent 和一个 NSString。

当我尝试将字典编码为 NSData 时,字符串编码正确。我在对 UITouches 进行编码时遇到错误,但我找到了一种使用一些代码扩展类的方法,以便可以对 UITouches 进行编码。但是,我仍然无法对 UIEvent(实际上是一个 UITouchesEvent)进行编码。我如何扩展 UIEvent 或 UIInternalEvent 以使其可编码为 NSData?

我用于编码/解码的方法:

-(NSString *)stringFromDictionary:(NSDictionary *)dict{
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dict forKey:@"dictKey"];
[archiver finishEncoding];

return [Base64 encode:data];
}

-(NSDictionary *)dictionaryFromString:(NSString *)string{
NSData *data = [[NSMutableData alloc] initWithData:[Base64 decode:string]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *myDictionary = [unarchiver decodeObjectForKey:@"dictKey"];
[unarchiver finishDecoding];
return myDictionary;

}

我得到的错误:

-[UITouchesEvent encodeWithCoder:]: unrecognized selector sent to instance

如果我遗漏了有关调试的任何重要信息,请告诉我。谢谢!

最佳答案

您必须让 UITouchUITouchesEvent 适应 UICoding协议(protocol)。这意味着它必须支持这些方法:

- (id)initWithCoder:(NSCoder *)decoder;
- (void)encodeWithCoder:(NSCoder *)encoder;

我自己还没有尝试过,但如果你在类类别中这样做,它应该会起作用。困难在于找出您需要编码的内容,以便可以将其再次解码为正确的实例(如果您需要的话)。

关于ios - 将 UITouchesEvent 编码为 NSData 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com