我正在研究一个混合的Objective-C和Swift项目。
我有一个名为Point
的类,在Objective-C中定义,具有int
属性和初始值:
@property (nonatomic) int column;
@property (nonatomic) int row;
- (id) initWithColumn:(int)column row:(int)row;
我用来在Swift文件中创建一个对象:
Point(column: Column, row: Row)
但是它给出了一个错误:
无法使用类型为'(column:Int,row:Int)'的参数列表调用'init'
通过进一步检查,我发现Objective-C中的这些int
属性在Swift中变为Int32
,而Int32
无法转换为Int
。
有谁知道如何解决这个问题?
我想知道Objective C int如何成为Swift中的Int32以及如何处理这个以便我可以在Objective C中使用Swift中的Int类型?我经常使用这个类,并且更喜欢保持类型一致而不是每次都进行转换。
答案 0 :(得分:5)
您应该避免在Objective-C中使用int
,而是使用NSInteger
来代替Swift' Int
。
无论如何,如果您需要将Int
变量(例如n
)转换为Int32
,则可以使用
var n32: Int32 = Int32(n)
所以你的代码将是
Point(column: Int32(Column), row: Int32(Row))
答案 1 :(得分:0)
您所要做的就是从一种类型转换为另一种类型。
尝试:Point(column: int(Column), row: int(Row))
顺便说一下,在Swift / Objective-C中使用以大写字母开头的名称命名变量是非标准/混淆。