簡體   English   中英

無法調用在Swift中使用int的ObjC方法,因為Int32無法轉換為Int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM