Пользовательский cocoapod не находит файл swift - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь создать собственный Cocoapod для обработки всех моих сетевых вызовов для моего приложения iOS. Проблема, с которой я сталкиваюсь, заключается в том, что некоторые мои файлы, которые должны быть частью моего нового Cocoapod / framework, не обнаруживаются, когда я пытаюсь ссылаться на них в коде.

Я следовал этому руководству https://www.raywenderlich.com/5823-how-to-create-a-cocoapod-in-swift и успешно создал проект Cocoapod .xcworkspace (названный: ios-oauth2-rest-template) и добавил его в bitbucket, а также создал частное репозиторий PodSpec в bitbucket (названный : KPodSpec) (два отдельных репозитория).

Мне удалось пройти этот урок, но я застрял в части «Использование вашего нового CocoaPod». Мне удалось выполнить следующие команды, чтобы добавить Cocoapod в мой репозиторий PodSpec:

pod repo add KPodSpecs [Your RWPodSpecs Git URL]
pod repo push KPodSpecs ios-oauth2-rest-template.podspec

Когда я пытаюсь использовать мой новый модуль в существующем проекте (названном: KApp), на некоторые файлы, которые есть в моем Cocoapod, можно ссылаться, в то время как другие не будут автозаполняться даже после I import ios_oauth2_rest_template.

Я не уверен, что мне просто не хватает фреймворка для ios-oauth2-rest-template внутри моего KApp проекта. Любая помощь будет высоко ценится.

KApp Podfile:

    # Uncomment the next line to define a global platform for your project
platform :ios, '12.0'

source 'https://github.com/CocoaPods/Specs.git'
source 'https://bitbucket.org/kpodspecs.git'

target 'KApp' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for KApp

  target 'KAppTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'KAppUITests' do
    inherit! :search_paths
    # Pods for testing
  end

  pod 'LBTAComponents'
  pod 'SwiftyJSON', '~> 4.0'
  pod 'TRON', '~>4.0'

  pod 'ios-oauth2-rest-template', '~> 0.0.1'

end

Подспец ios-oauth2-rest-template:

Pod::Spec.new do |s|

# 1
s.platform = :ios
s.ios.deployment_target = '12.0'
s.name = "ios-oauth2-rest-template"
s.summary = "My summary here"
s.requires_arc = true

# 2
s.version = "0.0.1"

# 3
s.license = { :type => "Proprietary", :file => "LICENSE" }

# 4 - Replace with your name and e-mail address
s.author = { "My Name" => "myemail@email.com" }

# 5 - Replace this URL with your own GitHub page's URL (from the address bar)
s.homepage = "https://bitbucket.org/myStuff"

# 6 - Replace this URL with your own Git URL from "Quick Setup"
s.source = { :git => "https://bitbucket.org/myStuff.git",
:tag => "#{s.version}" }

# 7
s.framework = "UIKit"
s.dependency 'Heimdallr', '~> 3.6.1'

# 8
s.source_files = "ios-oauth2-rest-template/**/*.{swift}"

# 9
#s.resources = "RWPickFlavor/**/*.{png,jpeg,jpg,storyboard,xib,xcassets}"

# 10
# s.swift_version = "4.0"

end

ios-oauth2-rest-template Podfile:

# Uncomment the next line to define a global platform for your project
platform :ios, '12.0'

target 'ios-oauth2-rest-template' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  use_frameworks!

  # Pods for ios-oauth2-rest-template
    pod 'Heimdallr', '~> 3.6.1'

  target 'ios-oauth2-rest-templateTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Спасибо заранее. Я безрезультатно изучал интернет, почему это может происходить, и я в замешательстве, поскольку у меня нет такого большого опыта работы с CocoaPods.

UPDATE Вот несколько скриншотов

Секция Стручков KApp, чтобы показать некоторые из моих классов. Когда я пытаюсь использовать ApplicationUtils, он работает просто отлично и автозаполняется, но когда я пытаюсь использовать BaseClass, он не может его найти. The Pods section of the KApp, to show some of my classes.

Фазы сборки под настройками, чтобы показать, что все 30 файлов находятся в исходниках компиляции. 30 файлов соответствуют 30 файлам из проекта ios-oauth2-rest-template Xcode. 31-й файл - ios-oauth2-rest-template-dummy.m. Build phases under settings to show that all 30 files are under compile sources.

Изображение, показывающее структуру папок проекта ios-oauth2-rest-template Cocoapod. Image showing the folder structure of ios-oauth2-rest-template

1 Ответ

1 голос
/ 04 мая 2019

Благодаря @ balazs630 я смог решить проблему.Я должен был убедиться, что мой контроль доступа был установлен на public или open, чтобы получить к ним доступ.Оглядываясь назад на мой код, ApplicationUtils был общедоступным классом, а BaseClass не имел обозначения, поэтому по умолчанию это было internal, что в соответствии с документами :

Внутренний доступ позволяет использовать сущности в любом исходном файле из их определяющего модуля, но не в любом исходном файле за пределами этого модуля.

Для тех, у кого похожая проблема, проверьте, чтобы убедиться, что у вас есть доступуправление установлено соответствующим образом.Вот несколько источников, чтобы ознакомиться с контролем доступа в Swift:

...