错误:无法分配类型“字符串?”的值键入“字符串?。类型”
Posted
技术标签:
【中文标题】错误:无法分配类型“字符串?”的值键入“字符串?。类型”【英文标题】:Error: Cannot assign value of type 'String?' to type 'String?.Type' 【发布时间】:2018-10-23 12:20:07 【问题描述】:这段代码有几个问题。这是我的代码,我不明白为什么在第 61 行出现cell.userID = self.user[indexPath.row].userID
错误,它说:无法将String?
类型的值分配给String?.Type
。可能是因为在第 36 行:if let uid = value["profilepicture.userID"] as? String
。 userID
在 Firebase 中是个人资料图片的孩子,但我不知道如何在 value[]
中写下它。感谢您的回答。
// TableViewCell.swift
import UIKit
class FriendsTableViewCell: UITableViewCell
@IBOutlet weak var userImage: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
var userID = String?.self
// ViewController.swift
import UIKit
import Firebase
class FriendsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
@IBOutlet weak var tableview: UITableView!
var user = [User]()
override var preferredStatusBarStyle: UIStatusBarStyle
return .lightContent
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
func retrieveUsers()
let ref = Database.database().reference()
ref.child("users").queryOrderedByKey().observeSingleEvent(of: .value, with: DataSnapshot in
let users = DataSnapshot.value as! [String: AnyObject]
self.user.removeAll()
for (_, value) in users
//let uid = Auth.auth().currentUser!.uid
if let uid = value["profilepicture.userID"] as? String
if uid != Auth.auth().currentUser!.uid
let userToShow = User()
if let fullName = value["username"] as? String , let imagePath = value["profilepicture.photoURL"] as? String
userToShow.username = fullName
userToShow.imagePath = imagePath
userToShow.userID = uid
self.user.append(userToShow)
)
func numberOfSections(in tableView: UITableView) -> Int
return 1
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableview.dequeueReusableCell(withIdentifier: "FriendsTableViewCell", for: indexPath) as! FriendsTableViewCell
cell.nameLabel.text = self.user[indexPath.row].username
cell.userID = self.user[indexPath.row].userID
cell.userImage.downloadImage(from: self.user[indexPath.row].imagePath!)
return cell
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return user.count ?? 0
extension UIImageView
func downloadImage(from imgURL: String!)
let url = URLRequest(url: URL(string: imgURL)!)
let task = URLSession.shared.dataTask(with: url) (data, response, error) in
if error != nil
print(error)
return
DispatchQueue.main.async
self.image = UIImage(data: data!)
task.resume()
【问题讨论】:
在收到答案后删除您的问题是滥用。您已被警告。 【参考方案1】:无法分配字符串类型的值?键入 String?.Type。
改变
var userID = String?.self
到
var userID : String?
【讨论】:
@CameronCharmanson 如果有帮助,accept 这个答案是合适的。 @CameronCharmanson 当然,收到正确答案的回应是不删除原始问题。以上是关于错误:无法分配类型“字符串?”的值键入“字符串?。类型”的主要内容,如果未能解决你的问题,请参考以下文章
无法分配“NSDictionary”类型的值?键入“字符串?”
键入'字符串 | ArrayBuffer' 不可分配给类型 'string'
尝试在 2 个控制器之间传递数据时,我收到错误无法分配类型“ViewController.Item?”的值键入“项目?”,