Haben Schwierigkeiten, meinen Fehler hier zu sehen. Ich hole Datensätze von CoreData in Array und habe Probleme damit, dass alle Datensätze in UIPickerView angezeigt werden. Ich bin mir sicher, dass ich etwas sehr einfaches verpasse, aber ich fing an, Swift zu lernen und nach einer Anleitung zu suchen.UIPickerView und CoreData Array
Erwartetes Ergebnis: Ich habe 2 Spieler in meinem Wunsch holen und beide Spieler in der UIPickerView
Tatsächliches Ergebnis zeigen sollte: Nur ein Datensatz zeigt sich
Code:
import UIKit
import CoreData
class selectPlayersStatsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, NSFetchedResultsControllerDelegate {
@IBOutlet weak var playerSelector: UIPickerView!
var moc:NSManagedObjectContext!
var playerPickerSource: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
playerSelector.dataSource = self
playerSelector.delegate = self
moc = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let playerIsRequest:NSFetchRequest<PlayerTable> = PlayerTable.fetchRequest()
playerIsRequest.returnsObjectsAsFaults = false
var playerArray = [PlayerTable]()
do {
playerArray = try moc.fetch(playerIsRequest)
} catch {
print(error)
}
for player in playerArray {
playerPickerSource = [player.playername!]
//print(playerPickerSource)
//print(playerPickerSource.count)
}
}
//PICKER VIEW
public func numberOfComponents(in pickerView: UIPickerView) -> Int{
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return playerPickerSource.count
}
public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return playerPickerSource[row]
}
public func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let playerLabel = UILabel()
let playerData = playerPickerSource[row]
let myTitleYear = NSAttributedString(string: playerData, attributes: [NSFontAttributeName:UIFont(name: "Avenir Next", size: 18.0)!,NSForegroundColorAttributeName:UIColor.black])
playerLabel.textAlignment = .center
playerLabel.attributedText = myTitleYear
return playerLabel
}
/////////
@IBAction func goViewButton(_ sender: Any) {
let myPlayer = playerPickerSource[playerSelector.selectedRow(inComponent: 0)]
//let myYear = yearPickerSource[playerSelector.selectedRow(inComponent: 0)]
print(myPlayer)
// print(myYear)
}
}
Ich wusste, dass ich müde zu werden !! Vielen Dank für Ihre Hilfe GBaeOne. –