我正在将我的Objective-C代码转换为Swift。 我有自己的DataStructure类,名为“DCclass”,继承自“NSObject”... 我做了所有必需的事情,如:在Bridging-header导入“DCclass.h”等等事情很好但是在for循环中我面临的错误就像它的类型转换问题。 在此先感谢。
当前Objective-C代码:
#import “DCclass.h”
@interface LPFPickerCell ()
@property (nonatomic) NSMutableArray *myMutableArray;
@end
@implementation LPFPickerCell
- (void)setSelectedData:(NSString *) selectedString
{
int i = 0;
for (DCclass *dc in self.myMutableArray) /// Swift is showing compile time error here
{
NSLog(@"DCclass.empName = %@",dc.empName);
}
}
@end
转换后的Swift代码:
class LPFPickerCell {
var myMutableArray = [AnyHashable]()
func setSelectedData(_ selectedString: String?) {
let i: Int = 0
for dc: DCclass in myMutableArray { ///‘AnyHashable’ is not convertible to ‘DCclass’
print("DCclass.empName = \(dc.empName)")
}
}
}
答案 0 :(得分:3)
也许您需要更改阵列类型
var myMutableArray = [AnyHashable]()
到
var myMutableArray = [DCclass]()
然后在for循环中你可以像这样访问它
for dc in myMutableArray {
print("DCclass.empName = \(dc.empName)")
}
答案 1 :(得分:1)
AnyHashable类型将相等比较和散列操作转发给基础可散列值,隐藏其特定的基础类型。
您可以通过在AnyHashable实例中包装混合类型键,在字典和其他需要Hashable一致性的集合中存储混合类型键:
问题是使用AnyHashable
不适用于DCclass
类型,因此您需要手动将myMutableArray
转换为特定类型:
var myMutableArray = [DCclass]()
转换代码就像:
class LPFPickerCell {
var myMutableArray = [DCclass]()
func setSelectedData(_ selectedString: String?) {
let i: Int = 0
for dc: DCclass in myMutableArray {
print("DCclass.empName = \(dc.empName)")
}
}
}