Swift 从接收到的核心数据创建阵列
我可以从核心数据中获取数据,但现在我想创建一个带有“游戏名称”列的数组,以便使用该数组填充选择器视图Swift 从接收到的核心数据创建阵列,swift,Swift,我可以从核心数据中获取数据,但现在我想创建一个带有“游戏名称”列的数组,以便使用该数组填充选择器视图 import UIKit import CoreData class GameViewController: UIViewController, NSFetchedResultsControllerDelegate, UIPickerViewDelegate, UIPickerViewDataSource { var gameCourse: [String] = [String]()
import UIKit
import CoreData
class GameViewController: UIViewController, NSFetchedResultsControllerDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
var gameCourse: [String] = [String]()
var frc : NSFetchedResultsController = NSFetchedResultsController<NSFetchRequestResult>()
var pc = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
@IBOutlet weak var inputGameDate: UIDatePicker!
@IBOutlet weak var inputGameCourse: UIPickerView!
func fetchRequest() -> NSFetchRequest<NSFetchRequestResult> {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Course")
let sorter = NSSortDescriptor(key: "coursename", ascending: true)
fetchRequest.sortDescriptors = [sorter]
return fetchRequest
}
func getFRC() -> NSFetchedResultsController<NSFetchRequestResult> {
frc = NSFetchedResultsController(fetchRequest: fetchRequest(), managedObjectContext: pc, sectionNameKeyPath: nil, cacheName: nil)
return frc
}
override func viewDidLoad() {
super.viewDidLoad()
self.inputGameCourse.delegate = self as UIPickerViewDelegate
self.inputGameCourse.dataSource = self as UIPickerViewDataSource
frc = getFRC()
frc.delegate = self
do {
try frc.performFetch()
}
catch {
print (error)
return
}
//self.pickerView.reloadData()
gameCourse = ["Eagle Canyon","Ruimsig"]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Number of columns of data
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// The number of rows of data
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return gameCourse.count
}
// The data to return fopr the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return gameCourse[row]
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
导入UIKit
导入CoreData
类GameViewController:UIViewController、NSFetchedResultsControllerDelegate、UIPickerViewDeleteGate、UIPickerViewDataSource{
var gameCourse:[String]=[String]()
var frc:NSFetchedResultsController=NSFetchedResultsController()
var pc=(UIApplication.shared.delegate为!AppDelegate).persistentContainer.viewContext
@IBOutlet弱var inputGameDate:UIDatePicker!
@IBOutlet弱var输入游戏课程:UIPickerView!
func fetchRequest()->NSFetchRequest{
let fetchRequest=NSFetchRequest(entityName:“课程”)
let sorter=nssortddescriptor(键:“coursename”,升序:true)
fetchRequest.sortDescriptors=[分拣机]
返回请求
}
func getFRC()->NSFetchedResultsController{
frc=NSFetchedResultsController(fetchRequest:fetchRequest(),managedObjectContext:pc,sectionNameKeyPath:nil,cacheName:nil)
返回frc
}
重写func viewDidLoad(){
super.viewDidLoad()
self.inputGameCourse.delegate=作为UIPickerViewDelegate的自我
self.inputGameCourse.dataSource=作为UIPickerViewDataSource的self
frc=getFRC()
frc.delegate=self
做{
试试frc.performFetch()
}
抓住{
打印(错误)
返回
}
//self.pickerView.reloadData()
游戏过程=[“鹰峡谷”、“鲁米斯格”]
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
//数据列数
func numberOfComponents(在pickerView:UIPickerView中)->Int{
返回1
}
//数据的行数
func pickerView(pickerView:UIPickerView,numberOfRowsInComponent:Int)->Int{
返回gameCourse.count
}
//返回fopr的数据是正在传入的行和组件(列)
func pickerView(pickerView:UIPickerView,titleForRow行:Int,forComponent组件:Int)->String{
返回游戏路线[世界其他地区]
}
/*
//标记:-导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备
覆盖功能准备(对于segue:UIStoryboardSegue,发送方:有吗?){
//使用segue.destination获取新的视图控制器。
//将选定对象传递给新的视图控制器。
}
*/
}
首先,您可能希望运行对课程
对象的请求:
func fetchRequest() -> NSFetchRequest<Course> {
let fetchRequest = NSFetchRequest<Course>(entityName: "Course")
let sorter = NSSortDescriptor(key: "coursename", ascending: true)
fetchRequest.sortDescriptors = [sorter]
return fetchRequest
}
首先,您可能希望运行
课程
对象的请求:
func fetchRequest() -> NSFetchRequest<Course> {
let fetchRequest = NSFetchRequest<Course>(entityName: "Course")
let sorter = NSSortDescriptor(key: "coursename", ascending: true)
fetchRequest.sortDescriptors = [sorter]
return fetchRequest
}
在课程中实现此静态方法(NSManagedObject) 并像课程一样使用它
import CoreData
class var sortedCourses: [Course] {
let fetchRequest: NSFetchRequest<Course> = self.fetchRequest()
fetchRequest.sortDescriptor = NSSortDescriptor(keyPath: \Course.coursename, ascending: true)
return (try? pc.fetch(fetchRequest)) ?? []
}
导入核心数据
课程类别:[课程]{
let fetchRequest:NSFetchRequest=self.fetchRequest()
fetchRequest.sortDescriptor=NSSortDescriptor(键路径:\Course.coursename,升序:true)
返回(try?pc.fetch(fetchRequest))??[]
}
在课程中实施此静态方法(NSManagedObject)
并像课程一样使用它
import CoreData
class var sortedCourses: [Course] {
let fetchRequest: NSFetchRequest<Course> = self.fetchRequest()
fetchRequest.sortDescriptor = NSSortDescriptor(keyPath: \Course.coursename, ascending: true)
return (try? pc.fetch(fetchRequest)) ?? []
}
导入核心数据
课程类别:[课程]{
let fetchRequest:NSFetchRequest=self.fetchRequest()
fetchRequest.sortDescriptor=NSSortDescriptor(键路径:\Course.coursename,升序:true)
返回(try?pc.fetch(fetchRequest))??[]
}
您遇到了什么问题?甚至不使用NSFetchedResultsController,只需手动执行请求并获取结果。为什么只需要课程名称的数组?是仅用于显示目的,还是希望在之后从课程名称列表中选择一门课程?因为在一系列课程中获取完整的课程并用类似于return courses[row].name的内容填充选择器会更容易。如果要选择课程,则可以直接将课程从阵列发送到下一个控制器,而不是再次从核心数据中获取课程名称。您遇到了什么问题?甚至不要使用NSFetchedResultsController
,只需手动执行请求并获得结果。为什么只需要课程名称的数组?是仅用于显示目的,还是希望在之后从课程名称列表中选择一门课程?因为在一系列课程中获取完整的课程并用类似于return courses[row].name的内容填充选择器会更容易。如果要选择课程,则可以直接将课程从阵列发送到下一个控制器,而不是再次从核心数据中获取课程名称。我发现以下错误使用未解析运算符“=>”现在应该得到修复。我是从memorySorry写的,这让我很痛苦,但我得到了以下两个错误->'之后的预期类型->'之后的预期类型我得到了以下错误使用未解析运算符'=>'现在应该得到修复。我是从memorySorry写的,这让我很痛苦,但我得到了以下两个错误->'后的预期类型->'后的预期类型