У меня небольшая проблема с моим кодом. Когда я вызываю класс Player для моего массива в моем "TeamNamesViewController"
, я получаю сообщение об ошибке
"Невозможно преобразовать значение типа 'String' в ожидаемый тип аргумента 'Player?'"
Ошибка появляется в этой строке
NewPLayer.append(InputNameTextField.text!)
Под моим удовольствием c InsertNewName()
Но если я только создаю массив String, такой как var NewPLayer: [String?] = []
в моем TeamNamesViewController работает отлично!
Что мне делать?
___
import Foundation
class Player {
var name : String?
var score : Int
init(name: String?, score: Int) {
self.name=name
self.score=score
}
}
import UIKit
class TeamNamesViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate {
var NumberOfTeams = 0
let NewTeamCell = "NewTeamCell"
@IBOutlet weak var InputNameTextField: UITextField!
@IBOutlet weak var TableViewTeams: UITableView!
var person = Player(name: nil, score: 0)
var NewPLayer: [Player?] = []
override func viewDidLoad() {
super.viewDidLoad()
InputNameTextField.becomeFirstResponder()
// Do any additional setup after loading the view.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return NewPLayer.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: NewTeamCell, for: indexPath)
cell.textLabel?.text = NewPLayer[indexPath.row]?.name
return cell
}
@IBAction func AddTeamButton(_ sender: UIButton) {
InsertNewName()
if NumberOfTeams + 1 < NewPLayer.count {
NumberOfTeams += 1
InputNameTextField?.text = NewPLayer[NumberOfTeams]?.name
} else {
NumberOfTeams = 0
}
}
func InsertNewName(){
NewPLayer.append(InputNameTextField.text!) //The error appears here
let indexPath = IndexPath(row: NewPLayer.count - 1, section: 0)
TableViewTeams.beginUpdates()
TableViewTeams.insertRows(at: [indexPath], with: .automatic)
TableViewTeams.endUpdates()
InputNameTextField.text = ""
view.endEditing(true)
print(NewPLayer)
}
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
NewPLayer.remove(at: indexPath.row)
TableViewTeams.beginUpdates()
TableViewTeams.deleteRows(at: [indexPath], with: .automatic)
TableViewTeams.endUpdates()
}
}
}