id <NSObject, NSCoding> 对象的选择器 'valueForKey:' 没有已知的实例方法

No known instance method for selector 'valueForKey:' for id <NSObject, NSCoding> object

我遇到了一个我无法摆脱的错误。当我尝试使用 valueForKey 访问 id <NSObject, NSCoding> 的 属性 时,代码适用于函数参数 item,但不适用于类似的 id我从一个数组中检索出来。这是为什么?

- (void) insertItem:(id<NSCoding, NSObject >) item {
            for (int i = 0; i < [self.sortDescriptors count]; i++) {
                NSString  *propertyString = self.sortDescriptors[i].key;
                int idx = 0;
                id<NSCoding, NSObject > comparisonItem = self.items[idx];
                while ([[item valueForKey: propertyString] compare:[comparisonItem valueForKey: propertyString]] == NSOrderedAscending) {
                     ....

是这个电话:

[comparisonItem valueForKey: propertyString]

产生此错误:

No known instance method for selector 'valueForKey:' 

我缺少什么以及如何比较动态命名的 属性?

而不是 id<NSCoding, NSObject >,将此值键入 NSObject*