小编Qiq*_* Lu的帖子

由于编译器具有“内部”保护级别,因此无法访问框架init中的公共结构

我在名为“ MyFramework”的框架中有一个结构

public struct ShipmentPackage:Encodable {
  let package_code:String
  let weight:Float
}
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试在另一个项目/框架中创建ShipmentPackage时

import MyFramework
let onePackage = ShipmentPackage(package_code:"BX",weight:100)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,由于“内部”保护级别,无法访问“ ShipmentPackage”初始化程序。我进入此链接https://forums.swift.org/t/public-struct-init-is-un-expectedly-internal/5028

我试图将代码更改为以下内容:

第一次尝试:

public struct ShipmentPackage:Encodable {
  let package_code:String
  let weight:Float
  public init(package_code:String,weight:Float){
    self.package_code = package_code
    self.weight = weight
  }
}
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

public struct ShipmentPackage:Encodable {
  public let package_code:String
  public let weight:Float
  public init(package_code:String,weight:Float){
    self.package_code = package_code
    self.weight = weight
  }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将package_code和weight更改为public,但是以上都不起作用,编译时出现错误消息

<unknown>:0: error: 'init' is inaccessible due to 'internal' protection level
<unknown>:0: note: 'init' declared here
<unknown>:0: error: …
Run Code Online (Sandbox Code Playgroud)

access-control swift swift-custom-framework

4
推荐指数
2
解决办法
1969
查看次数