0
私は4つの項目を持つデフォルトの配列を持っています。 新しいアイテムを2番目のビューから追加しようとすると、1つのアイテムが削除されますが、追加する必要があります。 saveNewScoreがトリガされるたびに、配列に新しいItemを追加する必要があります。私はこの配列なぜ、それを追加するのではなく、配列内のItemを減算するのですか?
var playerData: [Player] = Player.createDefaultData()
が前の配列は4つのデフォルト値を持っている持っている最初のビュー については
。 は後で私が国連風セグエIBAction
@IBAction func newPlayerData(segue: UIStoryboardSegue) {
let editor = segue.source as! playerEditor
if let newData = editor.playerData {
playerData = newData
}
displayPlayerLeaderboard()
}
前のコードは私の2番目のビューコントローラであるplayerEditorビューから新しい配列を取得しています。私は次のコード
// Player Array
var playerData: [Player]?
// Func to add new player to playerData
@IBAction func saveNewScore() {
if let name = nameField.text, let hometown = hometownField.text, let state = stateField.text, let score = scoreField.text, let date = dateField.text {
if name.isEmpty == false && hometown.isEmpty == false && state.isEmpty == false && score.isEmpty == false && date.isEmpty == false {
let thisScore = Int(score) ?? 300
if thisScore >= 300 || thisScore < 0 {
let alert = UIAlertController(title: "Invalid Score", message: "A Player score must between the values of 0 and 300.", preferredStyle: .alert)
let okButton = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(okButton)
present(alert, animated: true)
} else if let savedPlayer = playerID, let savedData = playerData {
for (offset,player) in savedData.enumerated() {
if player.uniqueID == savedplayer {
player.name = name
player.town = hometown
player.state = state
player.score = thisScore
player.date = date
player.Data?[offset] = player
}
}
dismiss(animated: true, completion: nil)
} else {
let newPlayer = Player(name: name, town: hometown, state: state, score: thisScore, date: date, uniqueID: largestID + 1)
playerData?.append(newPlayer)
dismiss(animated: true, completion: nil)
}
} else {
let alert = UIAlertController(title: "Invalid Data", message: "Ensure that all text fields have data in them before proceeding.", preferredStyle: .alert)
let okButton = UIAlertAction(title: "OK", style: .default, handler: nil)
// add action to alert controller
alert.addAction(okButton)
present(alert, animated: true)
}
}
}
前のコードを持ってplayerEditor呼ば2番目のビューについては
は、複数のUITextFieldsから情報を取得するタイプのプレーヤーのplayerDataアレイに新しいプレイヤーを追加します。
ソート機能
func sortData(data: [Player]) -> [Player] {
var newData: [Player] = []
for (offset,player) in data.enumerated() {
if offset == 1 {
newData += [player]
} else {
for (offset,newPlayer) in newData.enumerated() {
if player.score >= newPlayer.score {
newData.insert(player, at: offset)
break
} else if offset == (newData.count - 1) {
newData.append(player)
}
}
}
}
return newData
}
カウントは4 –
が次にあなたが配列を操作している他の場所をチェックしているのですか? –
私はまたように行くソート機能を持っています –