gpt4 book ai didi

ios - 使用 Swift 使用 Core Data 对象填充 UIPickerView

转载 作者:可可西里 更新时间:2023-11-01 01:39:59 25 4
gpt4 key购买 nike

我正在尝试在 Swift 应用程序中使用 Core Data 对象填充 UIPickerView。

现在,我得到一个包含 4 行的选择器 View (Core Data 实体中有 4 个对象)。我的问题是所有 4 行标题都来自同一个对象。请看截图:

enter image description here

这是我目前的一段代码:

override func viewWillAppear(animated: Bool) {

getFetchedResultController_cat(currentEntity_cat)
}


func getFetchedResultController_cat(selectedEntity: NSString){

let appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedObjectContext: NSManagedObjectContext = appDelegate.managedObjectContext!

let fetchRequest = NSFetchRequest()

let entity = NSEntityDescription.entityForName(selectedEntity as String, inManagedObjectContext: managedObjectContext)

fetchRequest.entity = entity

fetchRequest.fetchBatchSize = 20

let sectionSortDescriptor = NSSortDescriptor(key: "name", ascending: true)

let sortDescriptors = [sectionSortDescriptor] //, secondSortDescriptor]

fetchRequest.sortDescriptors = sortDescriptors

let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)

aFetchedResultsController.delegate = self
self.fetchedResultsController_cat = aFetchedResultsController

var error: NSError? = nil
if !self.fetchedResultsController_cat.performFetch(&error) {
abort()
}
let x : Int = (self.fetchedResultsController_cat.fetchedObjects?.count ?? 0)
println("CATEGORIAS ACTUALES=")
println(x)
self.pickerView.reloadAllComponents()
}

func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return 100
}
//size the components of the UIPickerView
func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 20.0
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return fetchedResultsController_cat.fetchedObjects?.count ?? 0
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {

let indexPath = NSIndexPath(forRow: 0, inSection: 0)
let fetchedObject: AnyObject = self.fetchedResultsController_cat.objectAtIndexPath(indexPath)
print (fetchedObject.valueForKey("name"))
var nombre: AnyObject? = fetchedObject.valueForKey("name")
return nombre as! String
}

我想在每一行上显示正确的行标题。

我的代码中缺少什么?

谢谢。

最佳答案

看起来你总是在获取结果中获取第一个元素:

尝试改变这个:

let indexPath = NSIndexPath(forRow: 0, inSection: 0) 

对此:

let indexPath = NSIndexPath(forRow: row, inSection: 0)

关于ios - 使用 Swift 使用 Core Data 对象填充 UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com