Ios 无法转换类型为';NSNull';指定所需的参数类型

Ios 无法转换类型为';NSNull';指定所需的参数类型,ios,swift,swift4,Ios,Swift,Swift4,我在Objective-C到Swift代码更改过程中遇到以下错误。谢谢 var sortedHours = gymDetail.hours.sorted(by: { ($0.startTime < $1.startTime) }) let gymdays = GymHours.orderedDays() for i in 0..<(gymdays.count) { var pad = false if i >= sortedHours.count {

我在Objective-C到Swift代码更改过程中遇到以下错误。谢谢

var sortedHours = gymDetail.hours.sorted(by: { ($0.startTime < $1.startTime) })
let gymdays = GymHours.orderedDays()
for i in 0..<(gymdays.count) {
    var pad = false
    if i >= sortedHours.count {
        pad = true
    } else {
        let hours = sortedHours[i]
        print(GymHours.orderedDays()[i])
        if  (hours.day == GymHours.orderedDays()[i] as! String) {
            pad = true
        }
    }
    if pad {
        sortedHours.insert(nil, at: i)
    }
}

此数组
sortedHours
不是可选值

试试这个代码

 var sortedHours: [GymHours?] = gymDetail.hours.sorted(by: { ($0.startTime < $1.startTime) })
            let gymdays = GymHours.orderedDays()
            for i in 0..<(gymdays.count) {
                var pad = false
                if i >= sortedHours.count {
                    pad = true
                } else {
                    let hours = sortedHours[i]
                    print(GymHours.orderedDays()[i])
                    if  (hours.day == GymHours.orderedDays()[i] as! String) {
                        pad = true
                    }
                }
                if pad {
                    sortedHours.insert(nil, at: i)
                }
            }
var sortedHours:[GymHours?]=gymDetail.hours.sorted(按:{($0.startTime<$1.startTime)})
让gymdays=GymHours.orderedDays()
对于0中的i..=sortedHours.count{
pad=true
}否则{
让小时=小时[i]
打印(GymHours.orderedDays()[i])
if(hours.day==GymHours.orderedDays()[i]as!String){
pad=true
}
}
如果垫{
分类时间。插入(无,在:i)
}
}

这个错误是不言自明的。数组期望其内容为
NSNull
类型,
NSNull()
显然是
NSNull
类型。为什么要将
NSNull
插入到该数组中?发送nil将解决该问题,就像[sortedHours insertObject:nil atIndex:i];这并不能回答问题:为什么要将其他类型(或nil)的值插入到期望值为
GymHours
type的数组中?能否打印此
print(GymHours.orderedDays()[i])
然后尝试使用
sortedHours.insert(“,at:i))
相同错误-Nil与预期参数不兼容type@Siva告诉我你是如何使用它的,因为它适用于我。逻辑在变成optional@Siva如果您想通过nil,它需要是可选的。Swift就是这样工作的,非可选字段只能是定义的类型。可选意味着它可以是与Simon McLoughlin完全相同的注释类型
GymHours
nil
@Siva
 var sortedHours: [GymHours?] = gymDetail.hours.sorted(by: { ($0.startTime < $1.startTime) })
            let gymdays = GymHours.orderedDays()
            for i in 0..<(gymdays.count) {
                var pad = false
                if i >= sortedHours.count {
                    pad = true
                } else {
                    let hours = sortedHours[i]
                    print(GymHours.orderedDays()[i])
                    if  (hours.day == GymHours.orderedDays()[i] as! String) {
                        pad = true
                    }
                }
                if pad {
                    sortedHours.insert(nil, at: i)
                }
            }