Udemyで以下のようなお手本コードがあったのですが、lazyを付けるとエラーが解消されていました。
なぜエラーが解消できるのか知りたいです。
① import UIKit class ProfileHeader: UICollectionReusableView { ② // MARK: - Properties private lazy var followersLabel: UILabel = { let label = UILabel() label.numberOfLines = 0 label.textAlignment = .center label.attributedText = attributedStatText(value: 2, label: "followers") return label }() ③ // MARK: - Lifecycle override init(frame: CGRect) { super.init(frame:frame) addSubview(followersLabel) followersLabel.anchor(top:view.bottomAnchor,left: leftAnchor, right: rightAnchor,paddingTop: 16, paddingLeft: 24,paddingRight: 24) } ④ // MARK: - Helpers required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } ⑤ // MARK: - Actions @objc func handleChangeProfileImage() { print("ボタンがタップされました") } ⑥ // MARK: - Helpers func attributedStatText(value: Int,label: String) -> NSAttributedString { let attributedText = NSMutableAttributedString(string: "(value)\n", attributes: [.font: UIFont.boldSystemFont(ofSize: 14)]) attributedText.append(NSAttributedString(string: label, attributes: [.font: UIFont.systemFont(ofSize: 14), .foregroundColor: UIColor.lightGray ])) return attributedText } }
エラー文
Instance member 'attributedStatText' cannot be used on type 'ProfileHeader'; did you mean to use a value of this type instead?
やったこと
リンク内容を手がかりにどのパターンに当てはまるのか考えましたが、よくわかりませんでした。
ご教授いただけると嬉しいです。
よろしくお願い致します。
これは、Udemyのお手本コード通りにやったらエラーが出たけど、lazy キーワードをつけたらエラーが解消した、ということでしょうか。
原因と対策は概ねわかるのですが、Udemy の通りにやったのにエラーがでるのであれば、これは明らかにテキストの間違い(チェック不足)なので、講師にコメントを入れるべき内容かと思います。
ありがとうございます。
次の講座で先生が修正していました。
今後、Udemyの問合せフォームも活用していきます。
Udemy のテキストが間違っていて、修正されたら問題なく動いた、ということでしょうか。
ここで質問されるのももちろん構わないと思いますが、Udemy のテキストでおかしい場所があった場合は、まず講師に質問されるのが一番いいと思います(Udemy も適切な講師であれば、積極的に質疑応答や教材の変更を行いますので)。
>Udemy のテキストが間違っていて、修正されたら問題なく動いた
その通りです。
ありがとうございます。
そうさせていただきます。
お世話になります。
実はUdemyの講座は海外の方が先生をしていて英語で質問しなければなりません。
英訳してみたんですが、ディスコミュニケーションになってしまいそうなのでテラテイルで質問させていただこうと思います。
回答2件
あなたの回答
tips
プレビュー