【发布时间】:2018-08-06 02:48:21
【问题描述】:
我正在尝试调用 2 个不同的核心数据字符串并将它们分别放在单独的标签上。现在我收到错误无法使用类型为“([NSManagedObject])”的参数列表调用类型“init(_:)”的初始化程序。此错误来自 j1.text = String(itemsName)。我添加了两个视图控制器来保存和显示。
import UIKit
import CoreData
class ViewController: UIViewController {
@IBOutlet var j1 : UITextField!
@IBOutlet var j2 : UITextField!
@IBAction func save(){
let appD = UIApplication.shared.delegate as! AppDelegate
let context = appD.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Team", in : context)!
let theTitle = NSManagedObject(entity: entity, insertInto: context)
theTitle.setValue(j1.text, forKey: "score")
theTitle.setValue(j2.text, forKey: "alba")
do {
try context.save()
}
catch {
print("Tom Corley")
}
}}
class twoVC: UIViewController {
@IBOutlet var j1 : UILabel!
@IBOutlet var j2 : UILabel!
var itemsName : [NSManagedObject] = []
var itemsName2 : [NSManagedObject] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let appD = UIApplication.shared.delegate as! AppDelegate
let context = appD.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Team")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "score", ascending: true)]
let fetchRequest2 = NSFetchRequest<NSManagedObject>(entityName: "Team")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "alba", ascending: true)]
do {
itemsName = try context.fetch(fetchRequest)
itemsName2 = try context.fetch(fetchRequest2)
if let score = itemsName[0].value(forKey: "score") {
j1.text = (score as! String)
}
if let alba = itemsName2[0].value(forKey: "alba") {
j2.text = (alba as? String)
}
}catch {
print("Ashley Tisdale")
}
}}
【问题讨论】:
-
您收到此错误是因为
itemsName和itemsName2是数组,并且没有可用的 String init 可以接受数组作为参数,您能否详细说明您想要什么可以帮助我们了解你想要什么 -
@NiravD 我正在尝试从核心数据中调用 2 个不同的数组并将它们显示在单独的标签上。核心数据字符串是 alba 和 score。
-
你还没有得到,我的意思是如何在标签中显示数组,而且数组的类型是
NSManagedObject,你能显示你的团队实体 -
@NiravD 我用我的所有代码更新了我的问题。那应该回答你的问题。
-
现在您正在从第一个对象设置值,但是如果您的数组为空,如果您想显示所有数据,您的应用程序可能会崩溃,您需要使用 tableView 搜索它,您将知道如何实施它
标签: core-data label swift4 fetch nsfetchrequest