gpt4 book ai didi

ios - 核心数据快速sugue不将数据推送到第二个 View Controller

转载 作者:行者123 更新时间:2023-11-29 02:28:24 25 4
gpt4 key购买 nike

我有一个 TableView ,我想选择一个项目并让它在第二个 View Controller 中显示该项目的所有数据。这是我正在尝试使用的代码。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "showTea"){
let selectedIndexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()!
let genView:genViewController = segue.destinationViewController as genViewController
genView.teaname = selectedIndexPath

我收到以下错误。 'NSIndexPath' 不能转换为 'UILabel' 我确信我遗漏了一些简单的东西,但我还没有找到它是什么。

我就是这样保存数据的。

    @IBAction func addItem(sender: AnyObject) {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext!
let en = NSEntityDescription.entityForName("Items", inManagedObjectContext: context)
var newItem = dataModel(entity: en!, insertIntoManagedObjectContext: context)
newItem.name = Name.text
newItem.type = Type.text
newItem.amount = qty.text
newItem.temp = temp.text
newItem.time = time.text

context.save(nil)

self.navigationController?.popViewControllerAnimated(true)

}

感谢大家的帮助。不确定这是否是完成它的最佳方法,但它确实有效。下面的 genViewContorller。

var myData: Array<AnyObject> = []
@IBOutlet var name: UILabel!
@IBOutlet var type: UILabel!
@IBOutlet var qty: UILabel!
@IBOutlet var temp: UILabel!
@IBOutlet var time: UILabel!

var row: Int = 0
var tn: String = ""
var ty: String = ""
var qtyl: String = ""
var templ: String = ""
var timel: String = ""

override func viewDidLoad() {
super.viewDidLoad()

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext!
let freq = NSFetchRequest(entityName: "Items")
myData = context.executeFetchRequest(freq, error: nil)!
var data: NSManagedObject = myData[row] as NSManagedObject
var ty = data.valueForKey("type") as String
var tn = data.valueForKey("name") as String
var qtyl = data.valueForKey("amount") as String
var templ = data.valueForKey("temp") as String
var timel = data.valueForKey("time") as String
self.name.text = "\(tn)"
self.type.text = "\(ty)"
self.qty.text = "\(qtyl)"
self.temp.text = "\(templ)"
self.time.text = "\(timel)"

我正在获取通过 segue 传递的行值,并使用它来获取该行中每个字段的值。

最佳答案

您正在尝试将 NSIndexPath 分配给 UILabel。编译器错误非常明显。

请注意,您不能直接更新 @IBOutlets,因为它们尚未设置(它们仍然是 nil)。您需要将您的值存储在目标 View Controller 的属性中,然后在 viewDidLoad 中更新您的标签。

  1. genViewController 中添加一个属性来保存您的值。

    var row: Int = 0
  2. prepareForSegue中设置值。

    genView.row = selectedIndexPath.row
  3. genViewControllerViewDidLoad 中设置标签:

    self.teaname.text = "I came from row \(row)"

关于ios - 核心数据快速sugue不将数据推送到第二个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208659/

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