我與這個方法的NSString *爲char *鑄造問題
-(void)fetchDataFromTLE:(const char *)line1 AndLine2:(const char *)line2{
寫這方面的工作,代碼工作
char *line1= "blablabla";
char *lin2= "blebleble";
[self fetchDataFromTLE:line1 AndLine2:line2];
它的工作原理。
但是我需要從NSUserDefaults中取line1和line2,保存爲NSString。
所以:
NSString *line1 = [[NSUserDefaults standardUserDefaults] objectforkey:@"line1"];
NSString *line2 = [[NSUserDefaults standardUserDefaults] objectforkey:@"line2"];
,當然,如果我嘗試打電話給我的方法
[self fetchDataFromTLE:line1 AndLine2:line2];
它不工作
passing argument 1 of 'fetchDataFromTLE:AndLine2:' from incompatible pointer type
passing argument 2 of 'fetchDataFromTLE:AndLine2:' from incompatible pointer type
,這就是正常的。 所以我想將我的NSString *轉換成char *,但是我發現只有一種方法將NSString *轉換爲const char *。
const char *AAA1 = [line1 UTF8String];
投是正確的,但是如果叫我的方法,我有這個錯誤
warning: passing argument 1 of 'fetchDataFromTLE:AndLine2:' discards qualifiers from pointer target type
所以我鑫卡特投切爲const char *到一個char * ... ...和唯一途徑我知道是使用strcpy。
這樣:
#include <stdio.h>
#include <string.h>
...
char *a;
strcpy(a, AAA1);
不工作,因爲該應用程序崩潰!
我該怎麼辦?
謝謝!
這是一個警告,而不是錯誤。你也可以轉換爲'(char *)[@「foo」UTF8String];' – Eimantas 2011-05-03 14:58:04
既然'UTF8String'返回一個'const char *'並且你的方法需要'const char *'params,我不明白爲什麼你首先得到警告。除非你的方法需要'char *'params ... – albertamg 2011-05-03 15:08:58