当前位置: 首页 > 知识库问答 >
问题:

“实例成员”make alert“不能用于类型”alert“”无法修复此错误

左丘嘉木
2023-03-14

我创建了一个新的swift文件和类。 我想使用alert函数我的所有ViewControllers。 但我有个错误。 这是我的类和函数。

class alert {

func makeAlert(titleInput:String, messageInput:String){
       let alert = UIAlertController(title: titleInput, message: messageInput, preferredStyle: UIAlertController.Style.alert)
       let okButton = UIAlertAction(title: "Ok", style: UIAlertAction.Style.default, handler: nil)
       alert.addAction(okButton)
   }


}

我想像这样在这里使用我的函数

alert.makeAlert(titleInput: "Error", messageInput: " name or Location can't be empty")

下面是我的错误信息:

实例成员“make alert”不能用于类型“alert”; 您的意思是改用此类型的值吗?

共有1个答案

万喜
2023-03-14

Alert是类型,MakeAlert是实例成员。 正如错误所说

实例成员“make alert”不能用于类型“alert”

为了显示这些选项,让我首先重命名代码中的一些术语,以避免混淆

class Alert {

   func makeAlert(titleInput: String, messageInput: String) {
       let alertController = UIAlertController(title: titleInput, message: messageInput, preferredStyle: UIAlertController.Style.alert)
       let okButton = UIAlertAction(title: "Ok", style: .default, handler: nil)
       alertController.addAction(okButton)
   }
}

创建alert的实例

let alert = Alert()
alert.makeAlert(titleInput: "Foo", messageInput: "Bar")

或者使MakeAler成为static函数

static func makeAlert(titleInput:String, messageInput:String) { ...

则可以在类型上使用“make alert”

Alert.makeAlert(titleInput: "Foo", messageInput: "Bar")

有关更多信息,请阅读语言指南中的方法

但是额外的alert类并不是很有用,而且函数没有返回值。 一个更好的解决方案是扩展UIViewController,因为您可以在当前视图控制器中显示报警控制器

extension UIViewController {
    func presentAlert(title: String, message: String, completion: (() -> Void)? = nil) {
       let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
       let okButton = UIAlertAction(title: "Ok", style: .default, handler: nil)
       alertController.addAction(okButton)
       self.present(alertController, animated: true, completion: completion)
    }
}
       
 
 类似资料:
  • 问题内容: 我有以下课程: 编译失败,并显示以下消息: 实例成员’categoriesPerPage’不能用于’ReportView’类型 这是什么意思? 问题答案: 您说的时候只是语法错误。该是没有必要的。 用 : 如果你只想 得到 就可以写 通过第一种方法,您还可以将观察者添加为 & 允许用作二传手

  • 问题内容: 我试图访问从Person类继承的Indicator类的变量。但是,我认为我没有正确地进行初始化。 我得到以下信息:’错误:实例成员’name’不能用于’Indicator’`类型。 问题答案: 您不能直接以静态方法访问非静态内容。 该方法是静态的,因为已使用修饰符对其进行了修改: 的属性不是静态的,因为它没有被修改。 由于非静态成员属于该类的每个单独实例,而静态成员属于该类本身,因此静

  • 问题内容: 我有一个名为“威士忌制造商”的课程,它只会启动新的威士忌。现在,我想在“ WhiskyOverViewController”中添加新添加的威士忌。但是我面临以下问题: 在“ stringArray”行中,出现错误“实例成员’whiskyArray’无法用于类型’WhiskyOverViewController’。为什么不能在那里使用whiskyArray变量? 在此先感谢您的帮助 问题

  • 我正在尝试创建一个单例的访问方法。我得到这个错误(见下面的代码)。我不明白为什么会出现这个错误,以及这个错误的含义。有人能解释一下吗?

  • 问题内容: 我现在多次遇到此错误,并采取了不同的解决方法,但我真的很好奇为什么会发生。基本方案如下: 因此,我知道在类完全初始化之前不能使用self,但是在这种情况下,我使用的是self属性来初始化一个懒惰的var,直到我的实例准备好后,它才会发生。 谁能解释我为什么会 出错? 问题答案: 尝试: 精确确定惰性var的类型并将其添加到您传递的参数中非常重要

  • 我尝试对多个元素使用视图转换,但遇到了这个错误:静态成员“transition”不能用于“UIView”类型实例。我读过类似的讨论,但无法在我的案例中实现它们。你能帮帮我吗? 下面是我的代码:

  • 问题内容: 我在超类中定义了一个变量,并尝试在子类中引用它,但是实例成员上出现错误,无法在类型上使用 它出什么问题了?非常感谢 问题答案: 在下面的示例中可以看到,方法参数的默认值是在类作用域而不是实例作用域上求值的: 没有它将无法编译。 应用于您的案例意味着您必须将用作默认值的属性设为静态: (请注意,是在同一类中还是在超类中定义该属性都与该问题无关。)

  • 问题内容: 我在Swift中创建了一个非常简单的算命应用程序,并且不断遇到的问题。目前,我只是想让该应用程序随机绘制一个字符串,但出现一条错误消息: 实例成员’fortuneArray’不能用于’ViewController’类型 在我声明变量的行上。我已经使用Google一段时间了,但没有找到解决方法。希望有人可以帮助,谢谢! 更新 问题已解决!谢谢。 问题答案: 如果您粘贴的代码未在诸如之类的