代码之家  ›  专栏  ›  技术社区  ›  Rafe

类类型的文本列表/数组

  •  1
  • Rafe  · 技术社区  · 7 年前

    在目标c中,如何声明包含类型的列表?我想做的是有一个特定类类型的列表,然后检查某个特定对象的类是否在该列表中。

    伪代码:

    SET class_list TO [MyClass1, MyClass2, MyClass3]
    SET input_class_type TO class of input_object
    FOR each current_class_type in class_list
       IF input_class_type is same class type as current_class_type
          return TRUE
    END LOOP
    return FALSE
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Rob Napier    7 年前
    NSArray *classes = @[[NSArray class], [NSDictionary class], [NSSet class]];
    id inputObject = [NSSet new];
    
    for (Class class in classes) {
        if ([inputObject isKindOfClass: class]) {
            return true;
        }
    }
    return false;
    

    你通常想要 isKindOfClass ,它还检查该类型是否是给定类型的子类。如果您想知道它是完全相同的类,可以使用 isMemberOfClass ,但你常常会感到惊讶。例如:

    [[NSSet new] isMemberOfClass:[NSSet class]] == false
    

    为什么NSSet不是NSSet?因为NSSet是一个类集群,在本例中,“real”类型是一个名为\uunuseti的内部实现子类。这种事情在Objective-C中经常发生,所以你通常是说 有点像类 除非你有特别的需要。