2013-10-30 42 views
1

這在功能,我實現得到NSInteger的

-(NSString *)DeleteFolder:(NSInteger)FolderId; 

我在執行整數值,我創建使用FolderId

NSString *dbScript = [NSString stringWithFormat:@"Delete from Folders Where FolderId = %d",FolderId]; 

字符串,但我沒有得到文件夾而不是FolderId, ID我得到一個非常長的整數值。可能是指針參考。

請告訴我如何獲取文件夾ID。我做錯了什麼?

+0

你沒看到編譯器警告? ''NSInteger'類型的值不應該用作格式參數;添加一個明確的類型轉換爲'long',而不是[-Wformat]。' –

回答

3

NSInteger不是便攜式在這個意義上,如果它定義爲intlonglong long或別的東西,你可以永遠不知道。因此,專用於int%d轉換說明符不適用於打印NSInteger。更準確地說,它的使用會導致未定義的行爲。你需要做一個明確的類型轉換:

NSLog(@"Folder ID: %lld", (long long)FolderID); 

(我用long long,因爲這是最長的可能的標準整型。)

+3

對'long'的強制轉換實際上已經足夠了,'NSInteger'可以是'int'(32位)或'long'(64位) 。 –

3

嘗試這樣的: -

NSInteger a=20; 
NSLog(@"yourInteger=%ld",(long)a);