私のプロジェクトでは、Xcode 7.2でうまく機能していたObjective Cの列挙型に対してSwift拡張があります。Xcode 7.3スウィフトコードのObj C enumの宣言されていないタイプ
Xcode 7.3では、Obj C列挙型を拡張するSwiftファイルで「宣言されていない型」で失敗します。
サンプルプロジェクトをビルドしてコンパイルしてもうまく動作しますが、既存のプロジェクトでObj C列挙型の拡張を受け入れることはできません。
UPDATE:
のXcode 7.2を再インストールした後、私はプロジェクトがコンパイルされ、正常にビルドことを確認することができます。
Xcode 7.2で作業した後、私はこのプロジェクトをXcode 7.3でやり直してみましたが、同じ問題 - > Obj C列挙型のSwift拡張をビルドできません。
Xcode 7.3で派生したデータを消去して削除した後も、Swiftクラスがコンパイルされていないため、ヘッダーがまだ作成されていないため、-Swift.hヘッダーが見つかりません。
コード解説: "FriendRequestResult.h" 内部
マイOBJのC列挙型:
typedef NS_ENUM(NSInteger, FriendStatus)
{
FriendStatusRequestedByUser = 1,
FriendStatusRequestedByOtherUser,
FriendStatusFriends,
FriendStatusBlocked,
FriendStatusNone,
FriendStatusError,
};
さて、私のAppNameは、ブリッジング・HEADER.Hで期待どおりに私が持っている:
#import "FriendRequestResult.h"
次に、Xcode 7.2で作成されたFriendStatusをすばやく拡張しましたが、Xcode 7.3では「宣言されていないタイプの使用」で失敗します。
extension FriendStatus
{
init(stringValue : String?)
{
if let stringValue = stringValue
{
switch stringValue
{
case "REQUESTED_BY_USER": self = .RequestedByUser
case "REQUESTED_BY_OTHER": self = .RequestedByOtherUser
case "FRIENDS": self = .Friends
case "BLOCKED": self = .Blocked
default: self = .None
}
}
else
{
self = .None
}
}
}
実際には、この列挙型の拡張もいくつかのヘルパー関数を持っていますが、それは決して問題を変えてはいけません。
もちろん、列挙型の拡張が宣言されていない型を与えた場合、この型の使用はSwiftコードのどこでも同じ "宣言されていないもの"で失敗します。基本的には、インポートがブリッジヘッダーで行われていても、プロジェクトのSwift部分では列挙型は表示されません。
この質問は、最初のバージョンから大幅に編集されました。
あなたには、いくつかのサンプルコードを共有する気にしていますか? – Laurent
@JohnDifool、私は試してみるでしょう。しかし、この状況では、あなたが正しい部分を共有していることを確認するのは複雑なようです。 – Fawkes
は、私は新しいハイブリッドプロジェクトを作成し、あなたの 'NS_ENUM(NSInteger、FriendStatus)のtypedef' Objective-Cのヘッダファイルとスウィフトファイル内の '拡張FriendStatus'インチそれはうまくコンパイルされます。エラーをどうやって得るか教えていただけますか? – matt