web-dev-qa-db-ja.com

出力フレームの取得に失敗しました、状態8196

TableViewセルをカスタマイズしようとすると、このエラーが見つかりました。

「出力フレームの取得に失敗しました、状態8196」

私はそれがレルムまたは私のカスタマイズしたtableViewセルからのエラーであるとはまったく知りません。

class StudentTableViewController: UITableViewController {

    let realm = try! Realm()
    var student: Results<StudentName>?
    var selectedClass: ClassName? {
        didSet {
            load()
        }
    }
    var selected: String = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.title = selected
        tableView.register(StudentTableViewCell.self, forCellReuseIdentifier: "studentName")
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return student?.count ?? 1
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "studentName", for: indexPath) as! StudentTableViewCell
        cell.name.text = student?[indexPath.row].name ?? "There are no student in this class"
        cell.number.text = "\(student?[indexPath.row].studentNumber ?? 0)"
        return cell
    }
    func load() {
        student = selectedClass?.studentNames.sorted(byKeyPath: "studentNumber", ascending: true)
        tableView.reloadData()
    }
}

Xcode 9とSwift 4.1を使用している場合は機能したと思いますが、Xcode 10では、このエラーとテーブルビューの空白のページ全体しか表示されないため、機能しません。

3
Matthew Lin

セルに個別の.xibファイルがある場合は、以下を使用する必要があります。

tableView.register(nib: UINib?, forCellReuseIdentifier: String)

つまり、セルの登録は次のようになります。

self.tableView.register(UINib(nibName: "your cell nib name", bundle: nil), forCellReuseIdentifier: "your cell identifier")

ストーリーボードにあるコントローラー内のテーブルビューにセルを配置した場合は、セルを登録する必要はありません。@DávidPásztorが述べたように、ストーリーボードのセルにセル識別子を追加してください。

1
stan

ストーリーボードを使用している場合は、tableView.registerを呼び出さないでください。ストーリーボードのプロトタイプセルにreuseIdentifierを設定するだけです。

1
Dávid Pásztor

このエラーは、レルムをオフラインでのみ使用する場合でも、レルムを使用するとコンソールに出力されることがあります。

アプリがデバッグモードで実行されている場合、この回答に記載されているように、匿名で分析を収集します: Realm Swiftローカルでのみ使用しますが、オンラインに接続しようとします

エラーを停止するには、[スキームの編集]をクリックし、環境変数REALM_DISABLE_ANALYTICSを追加して、次のようにYESに設定します。

環境変数画面

0
Jerreh