0
ここで私の間違いを見るのに問題があります。 CoreDataからArrayにレコードを取得していて、すべてのレコードがUIPickerViewに表示されるのに問題があります。私は何か非常にシンプルなものを見逃していると確信していますが、ちょうどスイフトを学び、いくつかの指導を探し始めましたUIPickerViewとCoreData Array
期待される結果は:私はフェッチ要求を私の中に2人の選手を持っており、両方のプレイヤーがUIPickerView
実際の結果に表示されるはずです:一つだけのレコードが現れる
コード:
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)
}
}
を試してみてください!! GBaeOneのお手伝いをありがとうございました。 –