gpt4 book ai didi

ios - 实现协议(protocol)以将数据从推送的 View Controller 传回 View Controller

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

我是 iOS 开发的新手,并且在这个问题上停留了几个小时。我认为我在设置结构时做得正确。有人可以检查一下吗?当我在应该发送回数据的 View Controller 中调用 self.delegate!.updateData(daysSet) 时,它给我以下错误

expression resolves to an unused function

这是我尝试过的:

应该发回数据的 View Controller :

import Foundation
import UIKit

class RepeatDailyValueViewController: UITableViewController {

var delegate: RepeatDailyValueViewControllerDelegate? = nil

var daysSet : String = "bam"

override func viewDidLoad() {
super.viewDidLoad()
self.delegate!.updateData(daysSet)
}
}

应该接收数据的 View Controller

import Foundation
import UIKit

protocol RepeatDailyValueViewControllerDelegate {
func updateData(daysSet: String)()
}

class NewAlarmViewController: UITableViewController, RepeatDailyValueViewControllerDelegate {

var daysSet : String = "bam"

@IBOutlet var labelDay: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let vc = segue.destinationViewController as! RepeatDailyValueViewController
vc.delegate = self
}

func updateData(daysSet: String)() {
self.labelDay.text = daysSet
}
}

最佳答案

您的问题是,在您的协议(protocol)中,您已将 updateData 声明为 String -> (Void -> Void) 类型的函数(一个接受String 并返回另一个不接受任何参数且不返回任何内容的函数)而不是我认为你想要的,类型为 String -> Void 的函数(一个接受 String 且不返回任何内容的函数)。因此,当您给 updateData 一个字符串时,您将返回一个不带参数的函数。这是错误所描述的未使用的函数。

这叫做 curried functioncan be very useful in other situations .

要解决此问题,您只需删除协议(protocol)声明中多余的括号即可:

protocol RepeatDailyValueViewControllerDelegate {
// Delete the parentheses after (daysSet: String)
func updateData(daysSet: String)
}

关于ios - 实现协议(protocol)以将数据从推送的 View Controller 传回 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483434/

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