尝试将 _NSFaultingMutableSet 识别为 NSSet 的成员

发布于 2024-09-02 22:37:39 字数 571 浏览 2 评论 0原文

我试图将对托管对象的通用查询的结果识别为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情深如许 2024-09-09 22:37:39

哈!像往常一样,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.

还在原地等你 2024-09-09 22:37:39

或者, NSObject 确实有 isSubclassOfClass: 类方法(在 Mac OS X 10.2 中引入)。您可以这样做:

if ([itemsClass isSubclassOfClass:[NSSet class]])
{
    // do something
}

尽管如此,简单地测试实例本身可能更容易。

Alternatively, NSObject does have an isSubclassOfClass: class method (introduced in Mac OS X 10.2). You could do:

if ([itemsClass isSubclassOfClass:[NSSet class]])
{
    // do something
}

Although, it probably is easier to simply test the instance itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文