Как исправить ошибку «Не удалось найти символы» в Swift Playground - PullRequest
0 голосов
/ 20 января 2019

У меня есть рабочее пространство Xcode с динамической структурой (называемой VisualKit) и игровой площадкой, которая импортирует VisualKit.

Эта установка прекрасно работает, когда VisualKit не имеет собственных внешних зависимостей (то есть, когда VisualKit не зависит от каких-либо дополнительных динамических структур).

Однако, когда я добавляю динамический фреймворк (в данном случае я импортирую SnapKit, хотя это не имеет значения, какой это фреймворк), я получаю следующую ошибку:

error: Couldn't lookup symbols:
  VisualKit.ItemsLabel.__allocating_init() -> VisualKit.ItemsLabel
  type metadata accessor for VisualKit.ItemsLabel

Я пробовал следующее: - Очистка проекта, удаление оператора импорта, а затем его установка и попытка восстановить игровую площадку. - Удаление производных данных - Воссоздание рабочего пространства / детской площадки / рамочного проекта с нуля

... все безрезультатно.

Моя игровая площадка:

import UIKit
import PlaygroundSupport
import VisualKit

class MyViewController: UIViewController {
    override func loadView() {
        let view = UIView()
        view.backgroundColor = UIColor.red

        let label = ItemsLabel()
        label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
        label.text = "Hello"

        view.addSubview(label)
        self.view = view
    }
}

PlaygroundPage.current.liveView = MyViewController()

ItemsLabel (в проекте динамического фреймворка VisualKit):

import UIKit
import SnapKit

public class ItemsLabel: UILabel {
    public init() {
        super.init(frame: .zero)
    }

    required public init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

Я ожидаю, что игровая площадка будет работать с импортом SnapKit (в VisualKit) так же, как и без него.

Есть идеи?

1 Ответ

0 голосов
/ 21 января 2019

После многих кропотливых часов поиска и устранения неисправностей мне удалось решить эту проблему:

  1. В Xcode выберите свой каркасный проект в навигаторе проекта.

  2. Перейдите на вкладку Build Phases.

  3. Добавьте фазу Copy Files (нажав кнопку +) и выберите Frameworks в раскрывающемся списке.

  4. Добавьте все каркасы каркаса, используемые в вашей платформе, в фазу копирования файлов.

Затем очистите и перестройте ваш каркас, и игровая площадка теперь должна работать каквы ожидаете этого.

Обратите внимание, что этот ответ обязательно применяется только в том случае, если вы используете Carthage для создания сторонних фреймворков, используемых в вашем фреймворковом проекте.

...