Не позволит передать массив массивов строк в свойство класса? - PullRequest
0 голосов
/ 19 июня 2020

У меня есть класс под названием FilesTableViewController с этим свойством

  var files:[[String]]?

На prepareforsegue другого класса У меня есть это:

  let textFiles:[String]? = FileManager.default.getSortedFilesAtDocumentDirectoryWith(fileExtension: "txt", withFileExtension: true)
  let jpgFiles:[String]? = FileManager.default.getSortedFilesAtDocumentDirectoryWith(fileExtension: "jpg", withFileExtension: true)
  let files = [textFiles, jpgFiles]

  let filesTVC = segue.destination as? FilesTableViewController
  filesTVC!.files = files

ERROR на последнем строка: Тип выражения '()' неоднозначен без дополнительного контекста

Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Они оба разных типов. Один относится к типу [[String]?], а другой - к типу [[String]]?. Измените объявление files на [[String]?], чтобы исправить вашу проблему:

var files: [[String]?]
0 голосов
/ 19 июня 2020

В качестве альтернативы избавьтесь от всех необязательных параметров (необязательные параметры никогда не будут sh), объявите files как необязательный пустой массив

var files = [[String]]()

и назначьте пустой массив, если результат getSortedFilesAt... равен nil

let textFiles = FileManager.default.getSortedFilesAtDocumentDirectoryWith(fileExtension: "txt", withFileExtension: true) ?? []
let jpgFiles = FileManager.default.getSortedFilesAtDocumentDirectoryWith(fileExtension: "jpg", withFileExtension: true) ?? []
let files = [textFiles, jpgFiles]

let filesTVC = segue.destination as! FilesTableViewController
filesTVC.files = files
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...