ios - 由于 cocoa pod 中的内部保护错误快速类功能而无法访问

标签 ios swift cocoapods codable

我正在构建一个 cocoa pod 作为 RESTAPI 的包装器,我在 cocoa pod 项目的 Class 文件夹中创建了一个 Swift 文件。在 swift 文件中,我添加了一个符合可编码协议(protocol)的单例模式类和协议(protocol)。但是,当我尝试访问示例应用程序 viewcontroller.swift 文件中的单例类函数时,我收到一条错误消息,指出由于内部保护而无法访问 getCapsules。即使已将所有内容设为公开,我仍然收到此错误。
enter image description here
类文件夹文件

import Foundation


 class NetworkService
{
   
    
    public  let capsuleurl = URL(string: "https://api.spacexdata.com/v4/capsules")
      public let session = URLSession(configuration: .default)
    
   
    
 public func getCapsules(onCompletion :@escaping(Capsules) -> Void)
    {
     let task = session.dataTask(with: capsuleurl!) { (data, response, error) in
            
            DispatchQueue.main.async {
                do
                {
                    let capsules = try JSONDecoder().decode(Capsules.self, from: data!)
                    
                    onCompletion(capsules)
                    
                    
                    
                }
                
                catch
                {
                    print(error.localizedDescription)
                }
            }
        
            
        }
        
        task.resume()
    }
    
    
    
}




public struct Capsule: Codable {
 public   let reuseCount, waterLandings, landLandings: Int
public     let lastUpdate: String?
public     let launches: [String]
  public  let serial: String
public     let status: Status
 public   let id: String

  public   enum CodingKeys: String, CodingKey {
        case reuseCount = "reuse_count"
        case waterLandings = "water_landings"
        case landLandings = "land_landings"
        case lastUpdate = "last_update"
        case launches, serial, status, id
    }
}

public enum Status: String, Codable {
    case active = "active"
    case destroyed = "destroyed"
    case retired = "retired"
    case unknown = "unknown"
}

public typealias Capsules = [Capsule]
在示例应用程序中查看 controller.swift 文件
import UIKit
import KSBSpacexKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
       
        
        NetworkService.sharedobj. //I get error here sometimes NetworkService also not show in autocomplete

        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
project structure

最佳答案

将您的变量和函数公开以获取访问权限...默认情况下它们是内部的

public class NetworkService
    {
        public static var sharedobj = NetworkService()
        
       public  let capsuleurl = URL(string: "https://api.spacexdata.com/v4/capsules")
         public let session = URLSession(configuration: .default)
        
       
        
   public  func getCapsules(onCompletion :@escaping(Capsules) -> Void)
        {
           let task = session.dataTask(with: capsuleurl!) { (data, response, error) in
                
                DispatchQueue.main.async {
                    do
                    {
                        let capsules = try JSONDecoder().decode(Capsules.self, from: data!)
                        
                        onCompletion(capsules)
                    }
                    
                    catch
                    {
                        print(error.localizedDescription)
                    }
                }
            
                
            }
            
            task.resume()
        }
        
        
        
    }
    
    
    
    
    struct Capsule: Codable {
        let reuseCount, waterLandings, landLandings: Int
        let lastUpdate: String?
        let launches: [String]
        let serial: String
        let status: Status
        let id: String
    
        enum CodingKeys: String, CodingKey {
            case reuseCount = "reuse_count"
            case waterLandings = "water_landings"
            case landLandings = "land_landings"
            case lastUpdate = "last_update"
            case launches, serial, status, id
        }
    }
    
    enum Status: String, Codable {
        case active = "active"
        case destroyed = "destroyed"
        case retired = "retired"
        case unknown = "unknown"
    }
    
    typealias Capsules = [Capsule]

关于ios - 由于 cocoa pod 中的内部保护错误快速类功能而无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63090855/

相关文章:

ios - RXSwift,一个作为变量的结构

ios - 从 Objective-C iOS 中的 View Controller 在应用程序委托(delegate)数组中添加对象

ios - 如何使用 UIGestureRecognizer 隐藏 PKHUD?

ios - 如何在 Swift 中修改 SpriteKit 节点的大小?

ios - 如何最好地删除所有 UIViewcontroller 并转到单个 UIViewController?

ios - VNCoreMLFeatureValueObservation VS 类 VNClassificationObservation

ios - Collection View 中单元格的自定义填充顺序

ios - Storyboard应该包含在 Pod 项目中的什么位置?

ios - 为什么没有安装podfile?

ios - 由于缺少 arm64 的 arch,使用 cocoapods 的 XCode 项目突然中断