在我的应用中,我有一个结构“ PlayerRegistrationModelArray”。其中我有一个变量“ player”,它是另一个结构“ playerArray”的数组。我在“ AppDelegate”中创建了“ PlayerRegistrationModelArray”变量。但是,当我尝试将“ playerArray”追加到“ PlayerRegistrarionSecondViewController”类中的播放器中时,出现以下错误:-“致命错误:在展开可选值时意外发现nil”。请帮助我解决以下问题。
struct PlayerRegistrationModelArray {
var player: [playerArray]?
}
struct playerArray {
var playerName: String
var playerGender: String
var playerDOB: String
var playerSports: String
var playerGrade: String
}
class AppDelegate: UIResponder, UIApplicationDelegate {
var playerInfo: PlayerRegistrationModelArray?
}
class PlayerRegistrarionSecondViewController:
var playerarr: playerArray?
playerarr = playerArray(playerName: name_TextField.text!, playerGender: gender_TextField.text!, playerDOB: dateOfBirth_TextField.text!, playerSports: sport_TextField.text!, playerGrade: grade_TextField.text!)
print("DEBUG: player array Is \(playerarr!)")
var playerData = mAppDelegate.playerInfo?.player
playerData?.append(playerarr!)
if playerData!.count > 0{
print("DEBUG: playerData Is \(playerData!)")
}
for i in playerData! {
print("DEBUG: i Is \(i)")
paramters.updateValue(i.playerSports, forKey: "playerinfo[0][player_fullname")
paramters.updateValue("2018-08-08", forKey: "playerinfo[0][player_dob")
paramters.updateValue(playerarr!.playerGender, forKey: "playerinfo[0][player_gender")
paramters.updateValue(playerarr!.playerSports, forKey: "playerinfo[0][player_sport")
paramters.updateValue(playerarr!.playerGrade, forKey: "playerinfo[0][player_experience")
}
主要问题是您没有初始化var playerInfo: PlayerRegistrationModelArray?
..试图将值附加到nil
对象
首先初始化
设为lazy var playerInfo: PlayerRegistrationModelArray? = PlayerRegistrationModelArray()
然后不要强行解包playerarr
..可能就是零,这就是为什么您会收到此错误的原因
尝试一下
if let play = playerarr {
playerData?.append(play)
} else {
print("playerarr is nil")
}
这是识别问题的第一步。如果其为nil
,则需要查看其为零的原因所以回到上一行并检查
if let info = mAppDelegate.playerInfo {
print ("info exists ")
}