2011-11-21 17 views
2

如何將字符串轉換客觀C.爲char以下是我使用的代碼,如何將字符串轉換爲3號線在客觀C到燒焦

NSString *param = [paramsToPass objectAtIndex:0] 
[class gseInit:&getData]; 
[class gseCom:param]; 
NSLog(@"%@", param); 

,我得到以下警告,

將'NSString *'發送到類型爲 'char *'的參數的指針類型不兼容。

那麼如何結束上面的警告。提前感謝。

+2

也許,也許你應該閱讀NSString的文檔? –

+0

閱讀此http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html –

回答

3

你可能想給NSString的UTF-8表示:

NSString *param = [paramsToPass objectAtIndex:0] 
[class gseInit:&getData]; 
[class gseCom:[param UTF8String]]; 
NSLog(@"%@", param); 

但是,如果gseCom:更新串只會工作(即PARAM是const char *)。真正知道這一點的唯一方法是閱讀課程的文檔(你沒有提到課程是什麼,所以我不能幫助那裏)。

如果它不更新參數,並gseCom被錯誤地定義爲接受char *,而不是一個const char *,那麼你可以簡單地將其轉換爲正確的類型:

[class gseCom:(char *)[param UTF8String]]; 

但是,如果它的更新param,那麼你就需要給它一個緩衝一起工作:

[class gseInit:&getData]; 

NSString *param = [paramsToPass objectAtIndex:0] 

// Create a buffer containing the c-string (in UTF-8) 
#define BUFSIZ 256 // This size depends on what the string could hold 
char cparam[BUFSIZ]; 
[param getCString:cparam maxLength:BUFSIZ encoding:NSUTF8Encoding]; 

// Let the method update the string 
NSLog(@"before %s", cparam); 
[class gseCom:cparam]; 
NSLog(@"after %s", cparam); 
+0

您好trojanfoe,感謝您的幫助,使用您的代碼轉換後,我得到以下警告,如何克服這一點,我通過谷歌檢查,我無法得到適當的解決方案,警告是,發送'const char * '到類型'char *'的參數丟棄限定符。這個警告對你來說可能很簡單,但是我對目標C是新手,在此先感謝。 – shasha

+0

@shasha我已經用解決這個問題的方法更新了我的答案。 – trojanfoe

+0

非常感謝trojanfoe,它根據需要正確工作。 – shasha

2
NSString *param = [paramsToPass objectAtIndex:0] 
[class gseInit:&getData]; 
[class gseCom:[param cStringUsingEncoding:NSUTF8Encoding]]; 
NSLog(@"%@", param); 

method documentation

+0

嗨Regexident,感謝您的幫助,使用您的代碼轉換後,我得到以下警告,如何克服這一點,我通過谷歌檢查,我無法得到適當的解決方案,警告是,發送'const char *'參數類型'char *'丟棄限定符。這個警告對你來說可能很簡單,但是我對目標C是新手,在此先感謝。 – shasha

2
NSString *str = @"Hello"; 
char h = [str characterAtIndex:0]; 
NSLog(@"%c", h); 
+0

他實際上想要一個'char *'而不是'char'。 –

+0

謝謝保羅 - 錯過了* – PhillyNJ

+1

+ 1 IMO這是*所以*正確的答案。 – Marc

相關問題