我在一个应用程序中使用了旧版本的AFNetworking,它工作正常,除了我在initWithCoder
方法中的这一行中收到了来自Xcode的弃用警告:
self.queryStringSerializationStyle = (AFHTTPRequestQueryStringSerializationStyle)[[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))] unsignedIntegerValue];
具体警告为:
***-[NSKeyedUnarchiver解码键的对象:]:键(queryStringSerializationStyle)的值不是对象。这将在将来成为错误。
从代码中我可以看出(ObjectiveC不是我的强项),这是因为@selector(queryStringSerializationStyle)
看起来试图将querySerializationStyle
的“getter”选择器转换为NSString
,但我不明白为什么这是错误的,事实上它适用于前面的行:
self.mutableHTTPRequestHeaders = [[decoder decodeObjectOfClass:[NSDictionary class] forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))] mutableCopy];
我该怎么补救呢?
1条答案
按热度按时间eeq64g8w1#
这里的问题与选择器无关,而是序列化的值。很可能编码器使用了
-encodeInteger:forKey:
,所以实际编码的是一个整数,而不是NSNumber。当您将其解码为NSNumber(一个对象)时,它会抱怨类型不匹配。请确保您的编码和解码逻辑匹配。