如何在swift或objective c

时间:2016-01-19 16:04:42

标签: objective-c swift

我正面临一个问题,我需要找到一个类中定义的属性类型。

对于Ex:

class Demo {
var employee: [String] = [String]()
var departments: [Int] = [Int]()
}

我能够发现员工或部门属于Array类型。但是,我无法找出变量是哪种数组。它是一个字符串或数字的数组?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

在Objective-C中,数组在运行时是无类型的。所以他们不能告诉你他们的对象类型,因为他们不知道它。轻量级泛型不会改变这种情况;它们允许编译器通过声明预期用途来执行某些检查,但不留下运行时间。

Get object type from empty Swift Array解决了Swift方面的问题;我不能直接从记忆中说出来。如果它是正确的,那么看起来它可以做一些投票。

答案 1 :(得分:0)

您可以对

等对象进行类型检查
for(id object in departments)
{
     if([object isKindOfClass:[NSString class]])
     {
          //NSString here
     } 
     else if([object isKindOfClass:[NSNumber class]])
     {
          //NSNumber here
     }

}

或者如果你想要一个响应选择器的对象

    for(id object in departments)
    {
         if([object respondsToSelector:@selector(methodName:)])
         {
              //object responds to selector here
         }
    }

答案 2 :(得分:0)

像在objective-c中一样在swift中改进meth's answer,你可以检查数组中项目的类型

for item in library {
    if item is String {
        //Do something with Strings

    } else if item is Int {
        //Do something with Numbers
    }
}

您可以找到swift Type Casting here的所有文档。