ios - 未导入到 Objective C 的 Swift 变量

标签 ios objective-c swift xcode

我正在使用基于 Swift 的项目并导入了一些 Objective C 文件。现在我希望我的 Swift 代码能够在 ObjC 文件中正常工作。一切顺利,但不幸的是,类的 Int、Float 和 Double 属性不适用于 Objective C 类。知道为什么这不对 Objective C 开放吗?

swift 类:

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]?


    }

Swift 接口(interface)生成的类:

@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

这是访问对象Id时的错误。 Error while accessing Id of object

最佳答案

我刚刚尝试过,我的整数作为 NSInteger 导入(使用 Xcode 8.2.1 和 Swift 3.0.1)。无论如何,我认为使用 Id 作为变量名是个坏主意,原因有二: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]?


}

正如 Martin 之前指出的那样,这会导致您遇到所有问题。

关于ios - 未导入到 Objective C 的 Swift 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41425128/

相关文章:

objective-c - ios obj C 将字符串分隔成字符并添加字母

iphone - 核心数据 NSInvalidArgumentException 错误

objective-c - 如何在没有 UIScrollView 的情况下放大和缩小 UIImageView?

ios - 来自 RLMLinkingObjects 更改的 RLMResults 更改通知

SwiftUI 安全更新任务的状态变量

ios - Base64EncodedStringFromData Objective-C 的新 Swift 方式

ios - Phonegap build - 将远程文件下载到 iOS 上的文档目录

ios - 处理 CSV 文件

ios - 从未知类(id)对象获取文本的更短方法

ios - 如何确定 SKTexture 是否是占位符图像