gpt4 book ai didi

ios - ProductName-Swift.h 不会在更改相应的 Objective-C 文件时更新

转载 作者:行者123 更新时间:2023-11-28 11:23:08 24 4
gpt4 key购买 nike

我有,

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

所以我可以在我的另一个 Objective-C 中访问所有这些属性。

现在我必须在我的 Contact 类中添加新属性,这样它就变成了,

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 中没有明显的形式。它可以是一个 NSNumber 或者它可以是一个 NSInteger*。对于 ObjC 中的此类问题,这两种方法都不是特别常见的方法(更常见的是使用像 NSNotFound 或 -1 这样的“神奇值”)。您或许可以通过将其设为 NSNumber? 而不是 Int? 来解决这个问题。 Swift 调用者应该自动为你桥接。

如果您没有收到任何警告,我会打开雷达。如果 NSObject 子类无法一直转换为 ObjC,您可能应该得到一些指示。

这感觉就像您正在尝试在对象数据结构中创建外键。如果是这样,更好的解决方案是创建一个 UserAddress 类,并使您的变量指向该类而不是 Int(这样可选值就可以正常工作)。

关于ios - ProductName-Swift.h 不会在更改相应的 Objective-C 文件时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25058077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com