我有过,

public class Contact: NSObject {
    var sName : String?
    var sUserEmail : String?
    var sUserCellNo : String?
}

以及ProductName Swift.h中的相应代码,
SWIFT_CLASS("_NAME_")
@interface Contact : NSObject
@property (nonatomic, copy) NSString * sName;
@property (nonatomic, copy) NSString * sUserEmail;
@property (nonatomic, copy) NSString * sUserCellNo;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

所以我可以在我的另一个目标C中访问所有这些属性。
现在我不得不在我的联系人类中添加新属性,这样它就变成了,
public class Contact: NSObject {
    var iUserAddressID : Int? //newly added
    var sName : String?
    var sUserEmail : String?
    var sUserCellNo : String?
}

但在清理完大楼后,我得到了和以前一样的ProductName Swift.h,
SWIFT_CLASS("_NAME_")
    @interface Contact : NSObject
    @property (nonatomic, copy) NSString * sName;
    @property (nonatomic, copy) NSString * sUserEmail;
    @property (nonatomic, copy) NSString * sUserCellNo;
    - (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

所以,我无法使用新添加的iUserAddressID。如何克服这个问题?
仅供参考:使用xcode6 beta4

最佳答案

我怀疑它在将Int?转换为ObjC时遇到了障碍。在ObjC中没有明显的形式。它可以是NSNumberNSInteger*。对于ObjC中的此类问题,这两种方法都不是特别常见的(更常见的是使用NSNotFound或-1这样的“魔法值”)。您可以通过将其设置为NSNumber?而不是Int?来解决这个问题。快速来电者会自动为您转接。
如果你没有收到任何警告,我会打开雷达。如果NSObject子类不能一直转换为ObjC,您可能会得到一些指示。
这感觉像是在试图在对象数据结构中创建外键。如果是这样,更好的解决方案是创建一个UserAddress类,并使变量指向该类,而不是指向一个Int(那么optionals将工作正常)。

10-08 05:23
查看更多