gpt4 book ai didi

ios - 在另一个函数中调用返回类型别名值的函数

转载 作者:行者123 更新时间:2023-11-28 12:15:50 30 4
gpt4 key购买 nike

目前我们有一个带有函数的类,该函数返回一个 typeAlias 作为值:

class NotificationDetailFactory {

typealias T = UIViewController & NotificationDetailType

func getNotificationType(notificationType:PushNotificationDetail?) -> T? {

switch notificationType?.type! {
case .notice:
let notificationVC = NoticeViewController()
notificationVC.notificationType = notificationType
return notificationVC
case .promotion:
let promotionVC = PromoViewController()
promotionVC.notificationType = notificationType
return promotionVC
}
}

switch语句中的返回值就是需要访问的内容(即notificationVC、promotionVC)。在 View Controller 中调用“getNotifcationType”函数:

 let factory = NotificationDetailFactory()

func goToDetailView(notificationType: PushNotificationDetail) {

switch factory.getNotificationType(notificationType: notificationType){

case notificationVC:
self.presentViewController("BGMDetailNotifications", nextModule: "notice", showInNavigationController: true, showContainer: false, data: [:], animation: nil)
case paymentVC:
self.presentViewController("BGMDetailNotifications", nextModule: "payment", showInNavigationController: true, showContainer: false, data: [:], animation: nil)
} }

出现的问题是当我们尝试编译项目时,在代码的第二部分中的每个 case 语句旁边弹出一个错误:

Use of unresolved identifier 'notificationVC'

其中 VC 是 VC 试图在 getNotificationType 函数中访问的任何内容。我猜它之所以这样做是因为它为第一个函数返回了一个 typAlias。从第一个函数访问这些 VC 的最佳方式是什么?

最佳答案

你必须检查它们的类型。

let vc = factory.getNotificationType(notificationType: notificationType)
switch vc {
case is NoticeViewController:
self.present(vc, nextModule: "notice", ...)
// here goes your code for NoticeViewController case
case is PromoViewController:
self.present(vc, nextModule: "payment", ...)
// here goes your code for PromoViewController case
}

关于ios - 在另一个函数中调用返回类型别名值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46651335/

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