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では、このエラーとテーブルビューの空白のページ全体しか表示されないため、機能しません。
セルに個別の.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が述べたように、ストーリーボードのセルにセル識別子を追加してください。
ストーリーボードを使用している場合は、tableView.register
を呼び出さないでください。ストーリーボードのプロトタイプセルにreuseIdentifier
を設定するだけです。
このエラーは、レルムをオフラインでのみ使用する場合でも、レルムを使用するとコンソールに出力されることがあります。
アプリがデバッグモードで実行されている場合、この回答に記載されているように、匿名で分析を収集します: Realm Swiftローカルでのみ使用しますが、オンラインに接続しようとします
エラーを停止するには、[スキームの編集]をクリックし、環境変数REALM_DISABLE_ANALYTICS
を追加して、次のようにYES
に設定します。