をテーブルのデータソースを設定するとき、私は現在、単一のtableViewのための複数の細胞型を作る方法を学んでいると私はスウィフトでUITableView
4.エラー特定のクラスに
のためのデータソースを設定しようとすると、私はエラーを取得します次のようなエラーが発生します
'ProfileViewModel.Type'タイプの値を 'UITableViewDataSource'と入力できません。
私はこのエラーメッセージを取得するコードは、コードに関する詳細は以下の通りです。この1
tableView?.dataSource = ProfileViewModel
です。このクラスは元のViewController
クラス外ですが、私はUITableViewDataSource
でクラスを宣言しました。
class ProfileViewModel: NSObject, UITableViewDataSource {
var items = [ProfileViewModelItem]()
init(profile: Profile) {
super.init()
guard let data = dataFromFile(filename: "ServerData") else {
return
}
let profile = Profile(data: data)
if let name = profile.fullName, let pictureUrl = profile.pictureUrl {
let nameAndPictureItem = ProfileViewModelNameAndPictureItem(pictureUrl: pictureUrl, userName: name)
items.append(nameAndPictureItem)
}
if let about = profile.about {
let aboutItem = ProfileViewModelAboutItem(about: about)
items.append(aboutItem)
}
if let email = profile.email {
let dobItem = ProfileViewModelEmailItem(email: email)
items.append(dobItem)
}
let attributes = profile.profileAttributes
if !attributes.isEmpty {
let attributesItem = ProfileViewModelAttributeItem(attributes: attributes)
items.append(attributesItem)
}
let friends = profile.friends
if !profile.friends.isEmpty {
let friendsItem = ProfileViewModeFriendsItem(friends: friends)
items.append(friendsItem)
}
}
}
extension ProfileViewModel {
func numberOfSections(in tableView: UITableView) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items[section].rowCount
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// config
}
}
私はどうしたらよいですか?
'init'は' Profile'を渡すと意味をなさないが、そのパラメータを無視するように見えます。あなたはそのレビューをしたいかもしれません... – Rob
あなたのコメントをありがとうRob!私はそれに気付かなかった。私はそれを修正するつもりです。私はinitの後にプロファイルを宣言する必要はないと思う。 – George