将NSString转换为字符串

时间:2010-05-28 04:58:08

标签: objective-c iphone

NSDate *now = [NSDate date];                                 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];                    
[formatter setDateFormat:@"yyyy"];                     

NSString *stringFromDate = [formatter stringFromDate:now]; 
CGContextShowTextAtPoint(context, 50, 50, stringFromDate, 5);

我没有得到具体日期?编译时也会收到警告 警告:从不兼容的指针类型

传递'CGContextShowTextAtPoint'的参数4

2 个答案:

答案 0 :(得分:2)

该函数的原型是:

void CGContextShowTextAtPoint (
   CGContextRef c,
   CGFloat x,
   CGFloat y,
   const char *string,
   size_t length
);

但是在第4个参数中,您传递* NSString **(而不是函数原型所需的* const char **)。

您可以使用NSString的 cStringUsingEncoding 方法将NSString转换为C字符串,例如:

CGContextShowTextAtPoint(context, 50, 50, [stringFromDate cStringUsingEncoding:NSASCIIStringEncoding]);

答案 1 :(得分:1)

stringFromDate的价值是多少?你有什么期待?

  

编译时也会收到警告   警告:传递参数4   'CGContextShowTextAtPoint'来自   不兼容的指针类型

如果查看CGContextShowTextAtPoint的文档,您会发现第四个参数需要是char*,而不是NSString*.

你有:

GContextShowTextAtPoint(context, 50, 50, stringFromDate, 5);

你想:

GContextShowTextAtPoint(context, 50, 50, [stringFromDate UTF8String], 5);