Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 二进制运算符'<';无法应用于类型为';Int';和';Int?&x27;_Swift_Swift4 - Fatal编程技术网

Swift 二进制运算符'<';无法应用于类型为';Int';和';Int?&x27;

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

将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..<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() { ...