いくつかのオブジェクトを含むNSDictionaryがあります:UITouchesのNSSet、UIEvent、およびNSString。
辞書をNSDataにエンコードしようとすると、文字列は正しくエンコードされます。UITouchのエンコードでエラーが発生しましたが、UITouchをエンコードできるように、コードを使用してクラスを拡張する方法を見つけました。ただし、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
デバッグに関する重要な情報が不足している場合はお知らせください。ありがとう!