2017-01-02 11 views
0

Swiftベースのプロジェクトを使用していて、Objective Cファイルをインポートしました。今度はSwiftコードをObjCファイルで元に戻したい。すべてうまくいっていますが、残念ながら、クラスのInt、Float、Double属性はObjective Cクラスでは使用できません。なぜこれがObjective Cに公開されていないのでしょうか?Swift変数がObjective Cにインポートされていません

スウィフトクラス:

class Station: NSObject, NSCoding { 

    var Id : Int! 
    var placeId : Int! 
    var name : String! 
    var stationDescription : String! 
    var uuid : String! 
    var major : Int? 
    var minor : Int? 
    var coordinates: CLLocationCoordinate2D! 
    var geoFenceRadius : Float? 
    var questions : [Question]? 


    } 

スウィフト、インタフェース生成されたクラスは:オブジェクトのIDがアクセスされている間

@interface Station : NSObject <NSCoding> 
@property (nonatomic, copy) NSString * _Null_unspecified name; 
@property (nonatomic, copy) NSString * _Null_unspecified stationDescription; 
@property (nonatomic, copy) NSString * _Null_unspecified uuid; 
@property (nonatomic, copy) NSArray<Question *> * _Nullable questions; 
- (BOOL)isEqual:(id _Nullable)object; 
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; 
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; 
- (void)encodeWithCoder:(NSCoder * _Nonnull)aCoder; 
+ (Station * _Nullable)stationWithDictionary:(NSDictionary<NSString *, id> * _Nonnull)dict placeUUID:(NSString * _Nullable)placeUUID; 
+ (NSArray<Station *> * _Nullable)parseListFromDictionariesList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)dicts placeUUID:(NSString * _Nullable)placeUUID; 
@end 

これがエラーです。

+2

コードスニペットとエラーログがあれば表示してください。 –

+0

@Saad:あなたは 'class'の前に' @ objc'キーワードをswiftで使っていますか? – Poles

+0

@Poles nope。しかし、今これを試しても機能しませんでした。 – Saad

答えて

1

私はそれを試してみましたが、私のintはNSInteger(Xcode 8.2.1とSwift 3.0.1を使用)としてインポートされています。とにかく、IDを変数名として使うのは悪い考えです。理由は2つあります.1)Swiftでは、大文字でない変数名を使うべきです。 2)Idは、Obj-Cの予約されたキーワードIDと非常によく似ています。変数の名前をitemIDのように変更してみてください。また、削除してください!変数名の後に次のように0を初期化します。

class Station: NSObject, NSCoding { 

var itemID : Int = 0 
var placeId : Int = 0 
var name : String! 
var stationDescription : String! 
var uuid : String! 
var major : Int = 0 
var minor : Int = 0 
var coordinates: CLLocationCoordinate2D! 
var geoFenceRadius : Float = 0.0 
var questions : [Question]? 


} 

これは、先に指摘したとおり、すべての問題を引き起こしています。

+0

はそれをtomoでチェックします – Saad

関連する問題