Ios 无法将“字符串”类型的值分配给“用户”类型
我尝试使用以下代码执行从按钮到特定用户ID chatController的转换:Ios 无法将“字符串”类型的值分配给“用户”类型,ios,swift,firebase,Ios,Swift,Firebase,我尝试使用以下代码执行从按钮到特定用户ID chatController的转换: @IBAction func toChatPressed(_ sender: Any) { let user = jobDetails?.userID let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewFlowLayout()) chatLogController.user = us
@IBAction func toChatPressed(_ sender: Any) {
let user = jobDetails?.userID
let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewFlowLayout())
chatLogController.user = user
navigationController?.pushViewController(chatLogController, animated: true)
}
但它给我的是无法将“字符串”类型的值分配给“用户”类型的错误
chatController.user:
var user: User? {
didSet {
navigationItem.title = user?.name
observeMessages()
}
}
我从tableViewCell获得用户ID,并保存在一个结构中
struct JobDetails {
var jobDetail: String
var userName: String
var userImage: UIImage?
var jobImage: UIImage?
var downloadURL: String?
var userLocation: String
var userID: String?
}
您正在分配JobDetails.userID:String?到ChatLogController.user:用户
查看您的代码:
let user=jobDetails?.userID
…
chatLogController.user=user
必须将jobDetails?映射到用户?在结构jobDetails中,添加一个包含用户对象的新字段:
结构作业详细信息{
变量jobDetail:字符串
var用户名:String
var userImage:UIImage?
var jobImage:UIImage?
var downloadURL:String?
var userLocation:String
var userID:String?
var user:user?//在chatController中,属性用户的类型为user,即
现在,在tochat:method中,您将userID的值设置为chatController的用户,这从代码中可以明显看出
let user = jobDetails?.userID
这里userID是一个字符串?那么,上面代码中的用户是字符串类型
在上面的代码中,您正在将String?类型的用户分配给chatLogController.user类型的用户。这就是错误的含义
解决方案:
可以有两个选项来解决此问题
1.在chatLogController中创建String?类型的属性用户ID,即
现在,把它从tochat设置为:比如
2.或者,您可以使用toChatPressed\中的jobDetails创建用户对象,然后将其设置为chatLogController的用户,即
如果您还有任何疑问,请随时提问。我真的不知道我是否完全理解您,对不起,我是新来的……您能给我完整的解决方案吗?因为这就是我的问题……我现在怎么样this@DwallaT,无法将字符串值分配给用户值。在ChatLogController中,将属性设为User类型字符串
let user = jobDetails?.userID
chatLogController.user = user
var userID: String?
chatLogController.userID = jobDetails?.userID
let user = User(jobDetails) //this depends upon the how you've defined User
chatLogController.user = user