无法调用在Swift中使用int的ObjC方法,因为Int32无法转换为Int

Xi *_*Zhu 3 types objective-c swift

我正在研究一个混合的Objective-C和Swift项目.我有一个名为PointObjective-C的类,它有int属性和初始化器:

@property (nonatomic) int column;
@property (nonatomic) int row;
- (id) initWithColumn:(int)column row:(int)row;
Run Code Online (Sandbox Code Playgroud)

我用它来创建一个Swift文件中的对象:

Point(column: Column, row: Row)
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:

无法使用类型为'{(column:Int,row:Int)'的参数列表调用'init'

通过进一步检查,我发现intObjective-C 中的这些属性变为Int32Swift,并且Int32无法转换为Int.有谁知道如何解决这一问题?

我想知道Objective C int如何成为Swift中的Int32以及如何处理这个以便我可以在Objective C中使用Swift中的Int类型?我经常使用这个类,并且更喜欢保持类型一致而不是每次都进行转换.

Mar*_*ino 6

你可能应该避免int在Objective-C中使用NSInteger而是使用它来映射到Swift Int.

无论如何,如果你需要一个转换Int的变量,比如n,对Int32,你可以用它做

var n32: Int32 = Int32(n)
Run Code Online (Sandbox Code Playgroud)

所以你的代码会是

Point(column: Int32(Column), row: Int32(Row))
Run Code Online (Sandbox Code Playgroud)