Функция Swift из внешней библиотеки не импортируется - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь создать внешнюю библиотеку swift, полную функций, которые можно вызывать в других проектах. Я выполнил основные шаги по созданию библиотеки в Swift

Я запустил

swift package init

мой package.swift выглядит как

import PackageDescription

let package = Package(
    name: "TestProject",
    products: [
        // Products define the executables and libraries produced by a package, and make them visible to other packages.
        .library(
            name: "TestProject",
            targets: ["TestProject"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "TestProject",
            dependencies: []),
        .testTarget(
            name: "TestProject",
            dependencies: ["TestProject"]),
    ]
)

изапустил swift package generate-xcodeproj для создания проекта.

затем загрузил проект в Github и загрузил его в другой проект с помощью Swift Package Manager. Он загрузился просто отлично.

Я создал простой проект SwiftUI для тестирования моей библиотеки. в библиотеке я добавил функцию

func test() -> String{
    return("This was good!")
}

, а затем в проекте, в своем файле ContentView.swift я добавил import TestProject в операторах импорта (которые были построены правильно) и попытался вызвать test() в файле, установив значение по умолчанию Text("Hello World") на Text(test()), чтобы посмотреть, будет ли оно работать.

Мне было выдано сообщение об ошибке, в котором говорилось, что test() не является определенным

Использование неразрешенного идентификатора 'test'

Я не уверен, где я ошибаюсь, когда импортирую свою библиотеку, и я обнаружил удивительно мало, пытаясь посмотреть

мой файл TestProject.swift, расположенный в `/ Sources / TestProject / 'и сгенерированный swift для файла init

struct SwiftSciduct {
    var text = "Hello, World!"
}

func test() -> String{
    return("This was good!")
}

мой файл contentView.swift

import SwiftUI
import TestProject

struct ContentView: View {
    var body: some View {
        Text(test())
    }
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

Вид в недоумении, почему эта функция не используется в основном проекте.

1 Ответ

1 голос
/ 21 октября 2019

Вы не можете получить доступ к test(), поскольку по умолчанию установлен уровень доступа internal. Вам нужно пометить его как public или open, чтобы другие модули могли его видеть.

...