SWIFT работает с массивами и словарями - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь передать информацию второму контроллеру через segue из массива:

var gists = [Gists]()

Вот как моя реализация метода подготовить (для перехода: выглядит как

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "detailSegue" {
            if let indexPath = tableView.indexPathForSelectedRow {
                 guard let dvc = segue.destination as? DetailViewController else { return }
                dvc.filename = gists[indexPath.row].files.key // type String
                dvc.rawUrl = gists[indexPath.row].files.value // type String
            }
        }
    }

это дамп моего массива gists :

▿ 2 elements
  ▿ GistShowApp.Gists
    ▿ description: Optional("mySecondGist")
      - some: "mySecondGist"
    ▿ files: 1 key/value pair
      ▿ (2 elements)
        - key: "gistfile1.txt"
        ▿ value: GistShowApp.DetailGist
          ▿ filename: Optional("gistfile1.txt")
            - some: "gistfile1.txt"
          ▿ rawUrl: Optional("https://gist.githubusercontent.com/VladimirKhuraskin/9ca2362c09cebcc16bd74f51f267231a/raw/74caacd3ad3eedb369a07b926327d2ef37e3eefc/gistfile1.txt")
            - some: "https://gist.githubusercontent.com/VladimirKhuraskin/9ca2362c09cebcc16bd74f51f267231a/raw/74caacd3ad3eedb369a07b926327d2ef37e3eefc/gistfile1.txt"
  ▿ GistShowApp.Gists
    ▿ description: Optional("helloWorldDemo")
      - some: "helloWorldDemo"
    ▿ files: 1 key/value pair
      ▿ (2 elements)
        - key: "gistfile1.txt"
        ▿ value: GistShowApp.DetailGist
          ▿ filename: Optional("gistfile1.txt")
            - some: "gistfile1.txt"
          ▿ rawUrl: Optional("https://gist.githubusercontent.com/VladimirKhuraskin/c510014b85a6bdfa302f1f3837893a7c/raw/4648e701849ee7d52fb685111a7f0e4323505a35/gistfile1.txt")
            - some: "https://gist.githubusercontent.com/VladimirKhuraskin/c510014b85a6bdfa302f1f3837893a7c/raw/4648e701849ee7d52fb685111a7f0e4323505a35/gistfile1.txt"
2018-06-30 15:30:26.336720+0400 GistShowApp[1889:720551] [Snapshotting] Snapshotting a view (0x134032c00, UIKeyboardImpl) that is not in a visible window requires afterScreenUpdates:YES.

То есть у меня есть массив элементов gists , каждый из которых состоит из строки и словаря. В свою очередь, этот словарь имеет тип [String: String] . И мне нужно передать ключ и соответствующее значение.

Xcode выдает ошибку в этих строках. Как правильно их написать?

dvc.filename = gists[indexPath.row].files.key
dvc.rawUrl = gists[indexPath.row].files.value

1 Ответ

0 голосов
/ 01 июля 2018

gists[indexPath.row].files - это словарь, поэтому вам нужно установить dvc.filename и dvc.rawUrl для одной записи в этом словаре или передать весь словарь в контроллер подробного просмотра.

Для первого варианта:

dvc.filename = gists[indexPath.row].files["gistfile1.txt"].filename
dvc.rawUrl = gists[indexPath.row].files["gistfile1.txt"].rawURL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...