2010-11-15 61 views
5

好吧,我對此很難過。我搜索了過去的一小時,並沒有看到我做錯了什麼。我正在嘗試使用發件人的當前標題,然後將其轉換爲整數,以便我可以在列表中調用它。初始化使得整型指針沒有強制轉換

NSString *str = [sender currentTitle]; 
NSInteger *nt = [str integerValue]; // this is where the error appears // 
NSString *nextScreen = [NSString stringWithFormat:@"Screen_%@.jpg", [screenList objectAtIndex:nt]]; 

我認爲這件事情有沒有被正確使用的[str integerValue]一點,但我無法找到工作的例子。

謝謝!

回答

16

讓我們來分析錯誤信息:

初始化(NSInteger nt)時將整數([str integerValue])指針(*)不進行強制轉換。

這意味着你正在試圖非指針型([str integerValue],它返回一個NSInteger)的變量分配給一個變量指針類型。 (NSInteger *)。

獲取NSInteger後襬脫*的,你應該沒問題:

NSString *str = [sender currentTitle]; 
NSInteger nt = [str integerValue]; // this is where the error appears // 
NSString *nextScreen = [NSString stringWithFormat:@"Screen_%@.jpg", [screenList objectAtIndex:nt]]; 

NSInteger是機器相關的整型數據類型,它是像這樣定義的類型包裝:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger; 
typedef unsigned long NSUInteger; 
#else 
typedef int NSInteger; 
typedef unsigned int NSUInteger; 
#endif 
+2

這是對的。也許用戶從所有對象平臺轉換而來的一件事大部分都會感到困惑。 – 2010-11-15 18:21:51

+1

非常感謝這個快速答案。這樣做的訣竅和你的故障幫助我更快地理解「爲什麼」! – Eric 2010-11-15 18:51:53

+0

@Eric你非常歡迎。這就是StackOverflow的用途! :) – 2010-11-15 18:53:31

相關問題