尝试将 _NSFaultingMutableSet 识别为 NSSet 的成员
我试图将对托管对象的通用查询的结果识别为 NSSet。当前返回的类是 _NSFaultingMutableSet 的成员,这显然是相关的,但 isMemberOf:[NSSet class] 和 isKindOf:[NSSet class] 调用失败。
鉴于 Cocoa 没有直接实现 NSSet,所以管道中有一些空气并不奇怪,但我想知道我是否搞乱了一些明显的东西,或者这需要更高级别的功夫比我拥有的。
代码如下:
SEL selector = NSSelectorFromString(someString);
if(![self respondsToSelector:selector]){
NSLog(@"Error processing item");
return;
}
id items = [self performSelector:selector];
Class itemsClass = [items class];
if ( [itemsClass isKindOfClass:[NSSet class]]) {
// do something
}
I'm trying to recognize the result of a generic query to a managed object as an NSSet. Currently the class returned is a member of _NSFaultingMutableSet, which is clearly related, but fails the isMemberOf:[NSSet class] and isKindOf:[NSSet class] calls.
Given that Cocoa doesn't do a direct implementation of NSSet, it's not surprising that I've got some air in the pipes, but I'm wondering if I'm messing something obvious up or this requires a higher grade of kung-fu than I possess.
Code follows:
SEL selector = NSSelectorFromString(someString);
if(![self respondsToSelector:selector]){
NSLog(@"Error processing item");
return;
}
id items = [self performSelector:selector];
Class itemsClass = [items class];
if ( [itemsClass isKindOfClass:[NSSet class]]) {
// do something
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
哈!像往常一样,RTFM 解决了我的问题。事实证明,如果您不应该像我一样在类本身上调用 isKindOf: ,而是在特定实例上调用 isKindOf: 。啧啧。
Ha! My problem was solved, as usual, by RTFM. It turns out that if you are NOT supposed to call isKindOf: on a class itself, as I was, but rather on the particular instance. Tsk tsk.
或者, NSObject 确实有
isSubclassOfClass:
类方法(在 Mac OS X 10.2 中引入)。您可以这样做:尽管如此,简单地测试实例本身可能更容易。
Alternatively, NSObject does have an
isSubclassOfClass:
class method (introduced in Mac OS X 10.2). You could do:Although, it probably is easier to simply test the instance itself.