【发布时间】:2011-05-03 14:52:31
【问题描述】:
我正在使用这种方法
-(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
所以我想将 che const char* 转换为 char*... 而我知道的唯一方法是使用 strcpy。
所以:
#include <stdio.h>
#include <string.h>
...
char *a;
strcpy(a, AAA1);
由于应用崩溃而无法正常工作!
我能做什么?
谢谢!
【问题讨论】:
-
这是一个警告,而不是错误。你也可以直接投到
(char *)[@"foo" UTF8String]; -
由于
UTF8String返回const char *并且您的方法采用const char *参数,我不明白为什么您首先会收到警告。除非您的方法采用char *参数...
标签: iphone casting nsstring char