我正面临一个问题,我需要找到一个类中定义的属性类型。
对于Ex:
class Demo {
var employee: [String] = [String]()
var departments: [Int] = [Int]()
}
我能够发现员工或部门属于Array类型。但是,我无法找出变量是哪种数组。它是一个字符串或数字的数组?
感谢您的帮助。
答案 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的所有文档。