をロードするとき、私はそれがどこにあるか.documentからURLを取得するには、以下のコードを使用してクイックルック枠組み表ビューエラー致命的なエラー:範囲外のインデックスファイル
の準備を私のテーブルビューにURLパスをロードしようとしていますそれが最初のラベルに名前
を与えるために以下のコードを使用して、その後、その後private func prepareFileURLS() {
let csvFile = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last! as URL
if FileManager.default.fileExists(atPath: csvFile.path) {
fileURLs.append(csvFile as NSURL)
print(fileURLs)
}
}
を
var fileURLs = [NSURL]()
を作成したときに、空
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let objectIdentifier = "ObjectsTableViewCell"
guard let cell = tableView.dequeueReusableCell(withIdentifier: objectIdentifier, for: indexPath) as? ObjectsTableViewCell else {
fatalError("The dequeued cell is not an instance of ObjectsTableViewCell")
}
//quickview
// Fetches the appropriate object for the data source layout
let currentFileParts = extractAndBreakFilenameInComponents(fileURL: fileURLs[indexPath.row])
cell.nameLabel.text = currentFileParts.fileName
//cell.photoImageView.image = cur.photo
//quickview
cell.descriptionLabel.text = getFileTypeFromFileExtension(fileExtension: currentFileParts.fileExtension)
return cell
}
し、それがエラーを起こすところ
private func extractAndBreakFilenameInComponents(fileURL: NSURL) -> (fileName: String, fileExtension: String) {
// Break the NSURL path into its components and create a new array with those components.
let fileURLParts = fileURL.path!.components(separatedBy: "/")
// Get the file name from the last position of the array above.
let fileName = fileURLParts.last
// Break the file name into its components based on the period symbol (".").
let filenameParts = fileName?.components(separatedBy: ".")
// Return a tuple.
return (filenameParts![0], filenameParts![1]) --> Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
}
文字列にパスを打破するために致命的なエラーを以下の方法を使用して:範囲 のうち指数は、私が間違って何をしましたか?
セクションの行数を確認してください。あなたのURLに存在するデータよりも上の行を設定しようとしているかもしれません。 – Amit
@Amitこれはあなたが言及したものですか? のfuncのtableView(_のtableView:のUITableView、numberOfRowsInSectionセクション:INT) - >のInt { リターンfileURLs.count } – JameS
はい、これは方法です... cellforRowAt_indexpathにブレークポイントを置いて再びあなたのコードを実行します。また、コードがクラッシュする繰り返しを確認してください。 – Amit