Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法创建Swift包管理器库_Swift_Package - Fatal编程技术网

无法创建Swift包管理器库

无法创建Swift包管理器库,swift,package,Swift,Package,关于SPM的文档很差,大多数关于它的文章都是在SPM开始时发表的 我已经在Swift中实现了一个算法(匈牙利算法),并期待着在Github中将其作为库发布。我不得不在这个项目中第一次使用SPM来解决另一个依赖项,一旦它开始工作,它就完美了 现在,我无法使用另一个项目中的库。我已经决定从一个新的git回购开始,因为我不能让以前的工作 该库名为Hume,它包含一个定义Hume类的Hume.swift文件 我所经历的步骤如下: 已为库创建目录 swift包初始化——类型库 用代码填充文件 推送到Git

关于SPM的文档很差,大多数关于它的文章都是在SPM开始时发表的

我已经在Swift中实现了一个算法(匈牙利算法),并期待着在Github中将其作为库发布。我不得不在这个项目中第一次使用SPM来解决另一个依赖项,一旦它开始工作,它就完美了

现在,我无法使用另一个项目中的库。我已经决定从一个新的git回购开始,因为我不能让以前的工作

该库名为Hume,它包含一个定义Hume类的Hume.swift文件

我所经历的步骤如下:

  • 已为库创建目录
  • swift包初始化——类型库
  • 用代码填充文件
  • 推送到GitHub repo+标记版本
  • 为将要使用库的可执行文件创建目录
  • swift包初始化——键入可执行文件
  • 在Package.swift中添加依赖项
  • swift构建
  • 此时,swift克隆库的repo并编译它,没有任何问题(因为main.swift只包含一个helloworld)

  • swift包生成xcodeproj
  • 当我打开项目并尝试导入我的库时,似乎可以识别模块名称,但当我尝试声明对象时,它表示我无法声明属于模块类型的变量

    这是库中的Package.swift文件:

    // swift-tools-version:4.0
    // The swift-tools-version declares the minimum version of Swift required to build this package.
    
    import PackageDescription
    
    let package = Package(
        name: "Hume",
        products: [
            .library(
                name: "Hume",
                targets: ["Hume"]),
        ],
        dependencies: [
            .package(url: "https://github.com/aleph7/Upsurge.git", from: "0.10.2"),
        ],
        targets: [
            .target(
                name: "Hume",
                dependencies: ["Upsurge"]),
            .testTarget(
                name: "HumeTests",
                dependencies: ["Hume"]),
        ]
    )
    
    库中只有一个具有此样式的文件:

    import Upsurge
    
    class Hume {
        // Attributes
        ....
    
        init(matriz:[[Double]]){
            ....
        }
    
        public func resuelve() -> (Double, [(Int, Int)]){
            ....
        }
    }
    
    这是虚拟可执行文件中的Package.swift:

    // swift-tools-version:4.0
    // The swift-tools-version declares the minimum version of Swift required to build this package.
    
    import PackageDescription
    
    let package = Package(
        name: "aa",
        dependencies: [
            // Dependencies declare other packages that this package depends on.
            // .package(url: /* package url */, from: "1.0.0"),
        .package(url: "https://github.com/Jasagredo/Hume.git", from: "0.1.1"),
        ],
        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: "aa",
                dependencies: ["Hume"]),
        ]
    )
    
    生成时的输出:

     ~/Desktop/aa  swift build
    Fetching https://github.com/Jasagredo/Hume.git
    Fetching https://github.com/aleph7/Upsurge.git
    Cloning https://github.com/Jasagredo/Hume.git
    Resolving https://github.com/Jasagredo/Hume.git at 0.1.1
    Cloning https://github.com/aleph7/Upsurge.git
    Resolving https://github.com/aleph7/Upsurge.git at 0.10.2
    Compile Swift Module 'Upsurge' (30 sources)
    Compile Swift Module 'Hume' (1 sources)
    Compile Swift Module 'aa' (1 sources)
    Linking ./.build/x86_64-apple-macosx10.10/debug/aa
     ~/Desktop/aa 
    
    但当我在虚拟可执行文件中编辑main.swift时,我发现以下错误:

    import Hume
    
    var a = Hume(matriz: [[1,1],[1,1]]) //Cannot call value of non-function type 'module<Hume>'
    
    导入休谟
    var a=Hume(matriz:[[1,1],[1,1]])//无法调用非函数类型“module”的值
    
    而且,Xcode不会自动向我推荐休谟类。我只是不知道我做错了什么


    非常感谢您的帮助。

    我终于设法把事情办好了。问题是类(及其init方法)没有声明为
    public
    。其余的配置都是正确的。

    我终于设法让一切正常工作了。问题是类(及其init方法)没有声明为
    public
    。其余的配置是正确的。

    试试休姆。休姆(…)Xcode说:模块“休姆”没有名为“休姆”的成员,构建失败。我也尝试过命名类HunSolver和重命名文件,但都是一样的。当我试图声明HunSolver变量时,它会说“使用未解析的标识符‘HunSolver’”。尝试Hume。Hume(…)Xcode说:模块‘Hume’没有名为‘Hume’的成员,构建失败。我也尝试过命名类HunSolver和重命名文件,但都是一样的。当我试图声明一个HunSolver变量时,它会说“使用未解析的标识符‘HunSolver’”。