Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法将“字符串”类型的值分配给“用户”类型_Ios_Swift_Firebase - Fatal编程技术网

Ios 无法将“字符串”类型的值分配给“用户”类型

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

我尝试使用以下代码执行从按钮到特定用户ID chatController的转换:

@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