我与这个方法的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