Ios 无法调用类型为';工作';具有类型为';(文本:字符串?,作业图像:UIImage?';
当我尝试在以下代码中添加jobImage时,出现“无法使用类型为“(text:String?,jobImage:UIImage?)的参数列表调用类型为“Job”的初始值设定项”的错误:Ios 无法调用类型为';工作';具有类型为';(文本:字符串?,作业图像:UIImage?';,ios,swift,Ios,Swift,当我尝试在以下代码中添加jobImage时,出现“无法使用类型为“(text:String?,jobImage:UIImage?)的参数列表调用类型为“Job”的初始值设定项”的错误: let newJob = Job(text: textView.text, jobImage: takenImage) 这是根据作业的代码。swift var jobImage: UIImage! init(text: String, jobImage: UIImage, addedByUser: Strin
let newJob = Job(text: textView.text, jobImage: takenImage)
这是根据作业的代码。swift
var jobImage: UIImage!
init(text: String, jobImage: UIImage, addedByUser: String, userImage: UIImage) {
self.text = text
self.jobImage = jobImage
self.addedByUser = addedByUser
self.userImage = userImage
ref = Database.database().reference().child("jobs").childByAutoId()
}
您知道如何解决此错误吗?根据您的签名,如果让绑定传递所有参数,则需要使用
:
if let image = takenImage, let text = textView.text {
let newJob = Job(text: text, jobImage: image, addedByUser: addedByUser, userImage: userImage)
}
您的init
需要以下类型的参数:
String, UIImage, String, UIImage
你通过了
String?, UIImage?
如果您知道总是传递文本
和作业图像
,但并不总是分配其他属性,请将它们设置为可选
var text: String
var jobImage: UIImage
var addedByUser: String?
var userImage: UIImage?
然后,您可以使用可选属性的默认值创建init
,因此,如果您不将它们作为参数传递,则不管怎样,属性将为nil
init(text: String, jobImage: UIImage, addedByUser: String? = nil, userImage: UIImage? = nil)
现在,当您想使用init
时,必须打开textView
和takenImage
的可选text
属性
if let text = textView.text, let jobImage = takenImage {
let newJob = Job(text: text, jobImage: jobImage)
}
解决这个问题的两个办法,
解决方案1:
将参数保留为可选
var text: String?
var jobImage: UIImage?
var addedByUser: String?
var userImage: UIImage?
init(text: String? = nil, jobImage: UIImage? = nil, addedByUser: String? = nil, userImage: UIImage? = nil) {
self.text = text
self.jobImage = jobImage
self.addedByUser = addedByUser
self.userImage = userImage
ref = Database.database().reference().child("jobs").childByAutoId()
}
let newJob = Job(text: textView.text, jobImage: takenImage)
解决方案2:
按照方法定义传递方法调用中的所有必需值
let newJob = Job(text: textView.text, jobImage: image, addedByUser: "addedUser", userImage: userImage)
您还需要提供addedByUser:
和userImage
参数。如果不想这样做,可以为该参数提供默认值,如addedByUser:String=“”
。