【发布时间】:2014-09-03 06:16:59
【问题描述】:
我想在 xcode swift 中获取 uiview 的类描述,以获取 tableview 的cellForRowAtIndexPath
if([[[view class] description] isEqualToString:@"UITableViewIndex"]){
....
}
【问题讨论】:
我想在 xcode swift 中获取 uiview 的类描述,以获取 tableview 的cellForRowAtIndexPath
if([[[view class] description] isEqualToString:@"UITableViewIndex"]){
....
}
【问题讨论】:
这是基于问题的直接翻译。
if NSStringFromClass(view.classForCoder) == "UITableViewIndex"
{
}
【讨论】:
我认为,isEqualToSTring 不是您的最佳选择。我能想到两个更好的选择:
if view.isKindOfClass(UITableViewIndex) {
...
}
或者,甚至更好:
if let tableView = view as? UITableViewIndex {
... //Here you can use a tableView instead of view.
}
字符串比较不是一个快速的操作。 isKindOfClass / 类型转换应该更快。而且您不必担心字符串中的拼写错误。而且您不必到处更改这些字符串,以防您想重构代码并重命名您的类。
更新:正如 Nikolai Ruhe 所指出的,UITableViewIndex 是私有的(起初我以为它是您的自定义子类),因此在这种情况下不能使用这种技术。请查看 Allan 的答案。
【讨论】:
UITableViewIndex 是私有的。
UITableViewIndex 是OP 的自定义UITableView 子类。