Swift 二进制运算符'<';无法应用于类型为';Int';和';Int?&x27;
将Objective-C转换为Swift后,我遇到一个错误。谢谢Swift 二进制运算符'<';无法应用于类型为';Int';和';Int?&x27;,swift,swift4,Swift,Swift4,将Objective-C转换为Swift后,我遇到一个错误。谢谢 var gymdays = GymHours.orderedDays() for i in 0..<gymdays?.count { } var-gymdays=GymHours.orderedDays() 对于0..中的i,您可以安全地使用if let以避免崩溃,如果为零,则可能导致强制展开 if let gymdays = GymHours.orderedDays() { { for i in 0..&l
var gymdays = GymHours.orderedDays()
for i in 0..<gymdays?.count {
}
var-gymdays=GymHours.orderedDays()
对于0..中的i,您可以安全地使用if let
以避免崩溃,如果为零,则可能导致强制展开
if let gymdays = GymHours.orderedDays() {
{
for i in 0..<gymdays.count { }
}
如果让gymdays=GymHours.orderedDays(){
{
对于0中的i..Int?是可选的,所以Xcode告诉您正在尝试使用一个可能存在或不存在的值
如果值为nil,可以使用以下方法避免崩溃:
for i in 0..<(gymdays?.count ?? 0) {
}
对于0中的i..停止尝试转换目标C代码,只需在Swift中编写最接近的代码即可。它(通常)不起作用,甚至当它起作用时,它也会产生蹩脚的Swift代码。相反,学习ObjC和Swift,使您能够理解目标C代码中表达的内容,这样您就可以编写最好的Swift代码来表达它
此代码为代码正在NSArray
的索引上循环。在Swift中,您不应使用count
进行此操作。您只需在数组的……上循环即可:
for index in gymDays.indices { ...
很有可能在Objective C代码的下一行中,您会看到类似于let gymDay=[gymDays objectAtIndex:i]
的内容。在这种情况下,在Swift中,您可以直接迭代数组的元素:
for gymDay in gymDays { ...
如果同时需要索引和元素,则只需使用:
我得到了这个错误,二进制运算符“..@Siva对不起,忘记在它周围放置()来帮助编译器推断类型。现在修复了它。
for gymDay in gymDays { ...
for (index, gymDay) in gymDays.enumerated() { ...