J'ai du mal à voir mon erreur ici. Je récupère des enregistrements de CoreData dans Array et j'ai du mal à voir tous les enregistrements apparaître dans UIPickerView. Je suis sûr qu'il me manque quelque chose de très simple mais j'ai juste commencé à apprendre Swift et à chercher des conseils.UIPickerView et CoreData Array
Résultat attendu: J'ai 2 joueurs dans ma demande de récupération et les deux joueurs devraient apparaître dans le UIPickerView
Résultat réel: Un seul enregistrement apparaît
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)
}
}
Je savais que je fatiguais !! Merci beaucoup pour votre aide GBaeOne. –