2015-02-18 11 views
6

Ich versuche, ein schnelles Modul (Cocoa Touch Framework) mit wiederverwendbarem Code in der Umgebung von Kakao pods zu erstellen, die in Objective-C geschriebene Bibliotheken von Drittanbietern enthält (nämlich hier Restkit) . Leider kann ich Restkit nicht in dem von mir erstellten Modul verwenden.Verwendung der Abhängigkeit in Swift-Modul (Framework)

Hier ist, was ich tat, um das Modul zu erstellen:

  1. Datei -> Neues Ziel: Cocoa Touch Framework Sprache: Swift, Projekt: MyProject, einbetten in Anwendung: MyProject

  2. In der Registerkarte "Info" der Projekteinstellungen im Abschnitt "Konfigurationen" Ich definiere die Dateien Pods.debug und Pods.release xcconfig für mein neu erstelltes Ziel.

  3. In der Header-Datei, die Xcode automatisch für mich geschaffen, networkModule.h, füge ich die folgende Zeile:

    #import <RestKit/RestKit.h>

Ergebnis: Wenn Ich versuche zu kompilieren Ich bekomme den Fehler "include of nicht-modularen Header im Framework-Modul 'networkModule'"

Ich habe das Flag für "Nicht-modulare Includes in Framework-Module zulassen" auf YES in den Build-Einstellungen gesetzt für das Projektziel und das Modul/Framework-Ziel.

Ich ging zum Cocoa pod-Projekt und habe versucht, die Sichtbarkeit der RestKit.h-Header-Datei auf "Public" in der Zielmitgliedschaft zu setzen (was natürlich keine gute Lösung ist, mit der Kakaofrucht-Umgebung herumzuhantieren)

Ich kann nicht kompilieren. Ich bekomme immer noch den gleichen Fehler.

Ist es in erster Linie möglich, ein Cocoa Touch Framework mit Abhängigkeiten zu einem von Cocoa Pad verwalteten Framework zu erstellen?

Btw. Meine erste Idee, eine private Kakaokapsel zu kreieren, funktionierte nicht so gut, da sie nicht unterstützt zu werden scheint, obwohl ich die Prerelease der Kakaoschoten 0.36 mit Unterstützung für swift verwende.

+0

Dies ist ein Duplikat von http://stackoverflow.com/questions/24876936/obj-c-cocoapods-swift-framework – bonebox

+0

@alex da franca haben Sie Ihr Problem gelöst? Ich habe das gleiche Problem und ich kann keine Lösung finden –

+0

Das Problem ging nach ein paar weiteren Einstellungen Tweaks (oder wie es ein Xcode-Update ist ... ;-) Ich benutze RESTKit nicht mehr, wie ich gesucht habe eine "schnellere" Lösung. Nichtsdestotrotz verwende ich eingebettete Frameworks, die von PODs abhängen und es zum Laufen gebracht haben, aber es ist schwer zu sagen, welche Änderungen genau zum Erfolg führen. –

Antwort

0

Sie sollten in der Lage sein, Ihren gewonnenen privaten Pod zu machen. Sie müssen nur eine podspec dafür machen. Hier ist ein Beispiel von einem.

Pod::Spec.new do |s| 
    s.name   = "Commons" 
    s.version  = "1.0.0" 
    s.summary  = "Common code for my iOS projects." 
    s.license  = {:type => 'Commercial', :text => "Copyright (c) Dan Leonard(Or Your Name?). All rights reserved." } 
    s.source  = { :git => "https://github.com/PATHTOPOD", :tag => 
    s.version.to_s } 
    s.homepage  = "https://github.com/PATHTOPOD" 
    s.requires_arc = true 

    s.ios.deployment_target = '9.0' 

    s.subspec 'Core' do |ss| 
    ss.source_files = '*.swift' 
    end 

    s.subspec 'Menu' do |ss| 
    ss.source_files = 'Menu/*.swift' 
    ss.resources = ['Menu/*.storyboard', 'Menu/*.xcassets'] 
    ss.dependency 'Alamofire' 
    end 
end 

dann in Ihrem Projekt müssen Sie nur tun, um Ihre podfile pod init zu öffnen, die gerade erstellt wurde und diese

source 'https://github.com/CocoaPods/Specs.git' 
xcodeproj 'YOURPROJECT.xcodeproj' 
platform :ios, '9.0' 
use_frameworks! 

pod 'Commons', git: 'https://github.com/PATHTOPODPROJECT' 
#pod 'Commons', :path => '/Users/YourUser/Path/To/Project/commons' 

pod 'KeychainSwift' 
pod 'SQLite.swift', git: 'https://github.com/stephencelis/SQLite.swift.git' 

Jetzt wird in diesem Beispiel Podfile Commons zweimal die zweite angegeben hinzufügen Kommentar gesetzt ist. Wenn Sie es auskommentieren und den ersten Kommentar auskommentieren, dann tun Sie pod install in Ihrem Projektordner vom Terminal. Dies macht einen DevelopmentPod, der ein Pod ist, der lokal ist. Auf diese Weise können Sie den Pod lokal in Xcode ändern. Kein Umschalten und Pod-Installation bei jeder Änderung.

Sie die Kapsel wie jede andere importieren

import Commons nicht #import <Commons/Commons.h> indem sie das ist, wie Sie es in Objective C nicht Swift

Sobald Sie eine Arbeitsversion haben verpflichten es Nabe und Punkt git Ihr Projekt zur Github-Version.

Hoffe, das hilft.

+0

Danke, aber das Problem war nicht wirklich, einen eigenen POD zu erstellen, der ein bisschen später funktionierte und ich vermute, es war ein Versions-von-Cocoapods-Thema, damals (vor einem Jahr) Bitte lesen Sie die Kommentare zu der obigen Frage, dass das anfängliche Problem, das KEINEN eigenen Pod erstellt hat, sondern voneinander abhängige PODs hat, durch ein Update auf Kakaoschoten gelöst wurde. –

Verwandte Themen