2015-02-11 35 views
0

我试图让一个警告框显示一个随机生成的数字,但不管我怎么玩,我还没有得到它的工作,我仍在网上搜索。下面是我有:不兼容的指针类型发送'nsnumber *'到类型'nsstring *'的参数

ticketNumber = [NSNumber numberWithInt:arc4random() %100000]; 

PFObject *people = [PFObject objectWithClassName:@"People"]; 
people[@"ticket"] = ticketNumber; 
people[@"photo"] = chosenImage; 
[people saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    if (succeeded) { 
     // The object has been saved. 
     UIAlertView *ticketNumberView = [[UIAlertView alloc] initWithTitle:@"Ticket Number" 
                    message:ticketNumber 
                  delegate:nil 
                cancelButtonTitle:@"OK, I got it." 
                otherButtonTitles: nil]; 

     [ticketNumberView show]; 

不过,我收到的错误是“不兼容的指针类型发送‘的NSNumber *’到类型的参数‘的NSString *’”。该应用程序仍然编译并在我的iPhone上运行,但当它下降到该代码区域时,它会冻结并崩溃。我在这里有什么错误?

+1

您正在将NSString值作为NSNumber ...您必须将字符串值转换为数字。 – Manthan 2015-02-11 09:26:41

回答

0

尝试

[ticketNumber stringValue]; 

方法stringValue用于表达作为ticketNumber人类可读的字符串。

希望这有助于

0

您可以使用[ticketNumber stringValue]来的NSNumber转换成的NSString,并使用performSelectorOnMainThread以示警戒视图。

[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO]; 
0

在UIAlertView中类参考(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertView_Class/index.html#//apple_ref/occ/instp/UIAlertView/message)中的 “信息” 属性被定义为类型的NSString。所以,试图发送“ticketNumber”这个类型为NSNumber的对象(它继承自NSValue,而不是NSString)到UIAlertView的message属性中,这让编译器感到抱怨。要使用此初始值设定项,请首先将ticketNumber转换为NSString,并使用其他答案中提到的[ticketNumber stringValue]方法调用。

相关问题