私はこの上のアプリケーションがエラーを実行するたびにのUITableViewに表示し、クイックビューdocumentDirectoryからロードファイルのURLに
var fileURLs: [NSURL] = []
を使用してそれらを読むためにドキュメントディレクトリ内のファイルをロードしようとしてきました"範囲外のインデックス" としてライン[indexPath.row]
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if QLPreviewController.canPreview(fileURLs[indexPath.row]) {
quickLookController.currentPreviewItemIndex = indexPath.row
navigationController?.pushViewController(quickLookController, animated: true)
}
}
fileURLsアレイ
以下の方法で添付されているfileURLsにprivate func prepareFileURLS() {
let fileManager = FileManager.default
let path = fileManager.urls(for: .documentDirectory, in: .userDomainMask).last! as NSURL
let fileName = String(describing: path.lastPathComponent)
let pathString = String(describing: path.absoluteURL)
fileNames.append(fileName)
if FileManager.default.fileExists(atPath: pathString) {
fileURLs.append(path as NSURL)
print(fileURLs)
}
}
と結果たびに、私はそれをチェックする際に空の配列である、とだけ文書のパスを返さないファイルパス自体
[]
Optional(file:///Users/N/Library/Developer/CoreSimulator/Devices/EC72CD97-87F4-478E-967C-6BA135B2EC6C/data/Containers/Data/Application/0778931B-77DD-4CE8-92BF-E9A8002F901D/Documents/)
私は手動でフォルダをチェックしたときにそこにあるファイルは、彼らのです。 誰でも上記のコードに何が間違っているかを知っていますか?
追加**それはビューにすることはできませんを除いて、それはモデルファイルから名前やその他のデータをロードするので、完全に罰金表番組でファイル
ここfunc tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
//tableView.reloadData()
return csvFiles.count
}
は、データモデルである
class CSVData {
// MARK: Properties
var name: String
var descriptions: String
var photo: UIImage?
var url: NSURL
// MARK: Init
init?(name: String, descriptions: String?, photo: UIImage?, url: NSURL){
// init should fail if there is no name
if name.isEmpty {
return nil
}
self.name = name
self.descriptions = descriptions ?? ""
self.photo = photo
self.url = url
}
}
あなたの配列に要素があるよりも多くの行がtableviewに伝えられているようだから、あなたの 'numberOfRowsInSecrion'関数を表示する必要があります。 – Paulw11
@ Paulw11もっと詳しい情報を追加しました。ファイルは表示できないことを除いてテーブルに完全に表示されます。私が推測しているのは、そのURLにアクセスできないからです。データモデルにはURLも含まれていますが、使用方法はわかりません。 – JameS
'absoluteURL'はパスを返しません。 URLパスを取得するには、 'path'プロパティを取得する必要があります。 url absoluteStringを渡すと、 'fileExists(atPath:)'は常に失敗します。 'FileManager.default.fileExists(atPath:url.path)'です。そして、 'String(describe:)'を使用しないでください。 –