将结构体数组快速添加到另一个数组中时发生致命错误

问题描述 投票:0回答:1

在我的应用中,我有一个结构“ 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")
}
arrays swift structure
1个回答
-1
投票

主要问题是您没有初始化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 ")
}
© www.soinside.com 2019 - 2024. All rights reserved.