Ios 无法转换类型为';NSNull';指定所需的参数类型
我在Objective-C到Swift代码更改过程中遇到以下错误。谢谢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 {
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)
}
}