如何將字符串轉換客觀C.爲char以下是我使用的代碼,如何將字符串轉換爲3號線在客觀C到燒焦
NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:param];
NSLog(@"%@", param);
,我得到以下警告,
將'NSString *'發送到類型爲 'char *'的參數的指針類型不兼容。
那麼如何結束上面的警告。提前感謝。
如何將字符串轉換客觀C.爲char以下是我使用的代碼,如何將字符串轉換爲3號線在客觀C到燒焦
NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:param];
NSLog(@"%@", param);
,我得到以下警告,
將'NSString *'發送到類型爲 'char *'的參數的指針類型不兼容。
那麼如何結束上面的警告。提前感謝。
你可能想給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);
NSString *param = [paramsToPass objectAtIndex:0]
[class gseInit:&getData];
[class gseCom:[param cStringUsingEncoding:NSUTF8Encoding]];
NSLog(@"%@", param);
嗨Regexident,感謝您的幫助,使用您的代碼轉換後,我得到以下警告,如何克服這一點,我通過谷歌檢查,我無法得到適當的解決方案,警告是,發送'const char *'參數類型'char *'丟棄限定符。這個警告對你來說可能很簡單,但是我對目標C是新手,在此先感謝。 – shasha
您可能感興趣的Creating and Converting String Objects,從蘋果開發者網站。
也許,也許你應該閱讀NSString的文檔? –
閱讀此http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html –