[英]Cannot call an ObjC method taking int in Swift because Int32 cannot be converted to Int
我正在研究一個混合的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類型? 我經常使用這個類,並且更喜歡保持類型一致而不是每次都進行轉換。
您應該避免在Objective-C中使用int
並使用NSInteger
,它將被映射到Swift的Int
。
無論如何,如果你需要將Int
變量(例如n
轉換為Int32
,你可以使用它
var n32: Int32 = Int32(n)
所以你的代碼會是
Point(column: Int32(Column), row: Int32(Row))
你所要做的就是從一種類型轉換為另一種類型。
嘗試: Point(column: int(Column), row: int(Row))
順便說一句,在Swift / Objective-C中使用以大寫字母開頭的名稱來命名變量是非標准/混淆的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.