Objective-CプロジェクトでSwift Pod Frameworkをインポートして使用する方法
質問
私はCocoaPodsの新しいフレームワークをチェックアウトして、いくつかのPodを動かそうとしましたが、私のObjective-CプロジェクトでSwiftのものを使うのに問題があります。
まず最初に、これはCocoaPods prerelease 0.35で、使い方やインストール方法については ここで .
これが私の現在のPodfileです。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'MBProgressHUD'
pod 'SLPagingViewSwift'
MBProgressHUDはよくある回転するインジケータ、SLPagingViewSwiftはcocoapodsの検索でSwiftと入力して見つけたランダムなプロジェクトです。 以下は
ViewController.m
私のプロジェクトでは
#import "ViewController.h"
@import SLPagingViewSwift;
@import MBProgressHUD;
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// Works just fine
MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:hud];
[hud show:YES];
// Causes Error -- Won't build
SLPagingViewSwift *sl = [[SLPagingViewSwift alloc] init];
}
@end
ここでは
SLPagingViewSwift
の宣言です。
class SLPagingViewSwift: UIViewController, UIScrollViewDelegate {
見ての通り、これは
UIViewController
を継承しているので、それを割り当てて初期化するだけでも問題ないはずです。 ただのファイルとして別に追加しても、上記のコードは問題なく実行されます。 動作するのは分かっています。
tl;dr
CocoaPodsで作成した純粋なSwift Frameworkを純粋なObjective-Cのクラスで使用するにはどうしたらよいでしょうか?
トラブルシューティング
主に、いろいろなインポートを試しています。 Appleが推奨するのは
@import
スタイル
ここで
しかし、私は他の複数の品種を試しています。
// Compiler Error
#import <SLPagingViewSwift/SLPagingViewSwift.h>
// Builds Fine -- Doesn't Work
#import <SLPagingViewSwift/SLPagingViewSwift-Swift.h>
#import "SLPagingViewSwift-Swift.h"
他にもSwiftのライブラリを時々試して、何かクリックできるものがないかと考えていました。
私はこれを助けることができるCocoapodsの問題で何かを見ません、私はまた、彼らのブログ/リリースのもので何かを見つけませんでした。
ノート
を追加すると
SLPagingViewSwift.swift
ファイルをプロジェクトに個別に追加すると、うまく動作します。
どのように解決するのですか?
swiftクラスはpublicで宣言しないと内部クラスとして扱われ、同じモジュール内でしか見ることができないため、ファイルとして同じプロジェクトに追加してもうまくいかず、フレームワークとして追加してもうまくいかないことが原因かと思われます。もう一つ思いついたのは、フレームワークではクラス宣言の前に@objcを付けて、objective-cのクラス内で見られるようにする必要があるのかもしれません。また、Appleのガイドを読むと ミックスアンドマッチ を読むと、外部のフレームワークをインポートするときは、インポートするフレームワークのDefines Module build設定がYesに設定されていることを確認する必要があると書かれています。これらのオプションのいずれかを確認しましたか?
関連
-
[解決済み] プロジェクト内の単一ファイルのARCを無効にするにはどうしたらいいですか?
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] NSArrayのディープコピー
-
[解決済み] IOSのUIViewからアプリケーションのドキュメントフォルダに画像を保存する
-
[解決済み] BOOLプロパティの使用
-
[解決済み] MKMapViewのアノテーションをすべて削除する方法
-
[解決済み] objective-cのクラスインスタンスを名前で作成する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-Cです。カテゴリ内のプロパティ/インスタンス変数
-
[解決済み] Objective-Cでコールバックを実行する方法
-
[解決済み] NSDictionaryにboolean値を追加するにはどうすればよいですか?
-
[解決済み] objective-cでNSURLの一部を取得する
-
[解決済み] iOS - プログラムでUISwitchを設定する方法
-
[解決済み] NSStringの最初の3文字を取得するには?
-
[解決済み] Swiftの変数はアトミックか?
-
[解決済み] IOS: 角の丸いUIImageまたはUIImageViewを作成する
-
[解決済み] std::stringをNSStringに変換する方法は?
-
[解決済み] writeToFile:atomically:はデータを上書きするのか?