Iphone 复制其他类的字符串时出现问题

Iphone 复制其他类的字符串时出现问题,iphone,objective-c,copy,nsmutablestring,Iphone,Objective C,Copy,Nsmutablestring,在我的应用程序中,我向web服务器发送一个请求并获得一些结果,然后解析这个结果并将这个结果字符串存储到其他类对象字符串中 例如: @interface GraphView : UIViewController<UITabBarControllerDelegate> { NSMutableString *graphTempString; } @property(nonatomic,retain) NSMutableString *graphTempString; @

在我的应用程序中,我向web服务器发送一个请求并获得一些结果,然后解析这个结果并将这个结果字符串存储到其他类对象字符串中

例如:

@interface GraphView : UIViewController<UITabBarControllerDelegate> {  

NSMutableString *graphTempString;   

}
@property(nonatomic,retain) NSMutableString *graphTempString;   
@end  
调试时,我可以看到graphViewController.graphTempString的值,但转到GraphView后,我无法看到这些值


我希望有人知道如何解决这个问题。

传递值的简单方法

[[NSUserDefaults standardUserDefaults]setObject:resultString forKey:@"resultString"];
[[NSUserDefaults standardUserDefaults] synchronize];
在另一个类中,像这样使用这个值

NSString *resultString=[[NSUserDefaults standardUserDefaults]valueForKey:@"resultString"];
或者你可以这样做

graphViewController.graphTempString=self.tempString; 
appDelegate.stringValue = resultString;
tempString =  appDelegate.stringValue;
你能试试吗

2nClassObj.tempString =[NSString stringWithFormat:@"%@",resultString];  

祝你好运

@Pooja我建议你尝试这样做,让AppDelegate类中的一个变量将结果字符串赋给这个变量,然后在你的第二个类或任何你想要的类中从这个变量中获取值……你永远不会得到空值

让我们假设AppDelegate类的对象是AppDelegate,NSString类型的变量是Lets stringValue。然后在你的课堂上,你会得到这样的结果

graphViewController.graphTempString=self.tempString; 
appDelegate.stringValue = resultString;
tempString =  appDelegate.stringValue;
在你的2ndClass类中,从这个变量中取一个值,如下所示

graphViewController.graphTempString=self.tempString; 
appDelegate.stringValue = resultString;
tempString =  appDelegate.stringValue;
你会得到数据的……希望你明白我的意思


祝你好运

如果添加一些NSLog语句会发生什么

    if (grpahCall == YES) {
        graphViewController=[[GraphView alloc]init];

        NSLog(@"-%@-", tempString);
        graphViewController.graphTempString=tempString;  
        NSLog(@"-%@-", graphViewcontroller.graphTempString);

        [self.navigationController pushViewController:graphViewController animated:YES];  
    }


我希望看到同样的东西输出两次?你能告诉我你在控制台中得到了什么吗?

你怎么知道resultString也不是零呢?我试过使用NSLogresultString;在调试器中,我还可以看到reslutstring的值。2ndClassObj的.h文件中的属性是什么样子的?在调试器上复制到tempString时,我也可以看到tempString中的值,但当我使用[self.navigationController pushViewController:2ndClassObj animated:YES]在2ndClass中时;我正在检查tempSting的show nilin.h文件2ndClass*2ndClassObj的值;这怎么会比一处房产好呢?这里有一个问题不是很明显。如果对每个需要传递的变量都这样做,会发生什么?你将填充你的NSUserDefaults,这将导致你的应用程序启动速度变慢等。你还冒着错误地重复使用变量的相同名称的风险,例如,如果你有一个第三类也想传递一个“resultString”?我同意deanWomboume,我尝试过使用NSUserDefaults,我觉得它非常慢,一点也不慢。。。您可以在应用程序中的任何位置使用此值。这是最好的未来。如果速度慢,那为什么苹果会提供这种功能呢?它是用来在应用程序的不同运行之间存储值的。不只是在类之间传递变量。这就是@property存在的原因!在推之前是否尝试nslog tempstring,是否正在分配tempstring?我设置了属性,是否必须像tempstring=[[NSMutableSting alloc]init];?如果您没有初始化字符串,那么您必须在您的第二个类.m-id init{ifself=[super init]{tempString=[[NSMutabaleString alloc]init];]}返回self;}尝试此应用程序时出错:由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:'-[GraphView setGraphTempString:]:在graphViewController之后发送到实例0x6363220'的无法识别的选择器。graphTempString=tempString;哇!那根本不是我所期望的!它正在尝试调用setGraphTempString,它应该可以正常工作-看起来graphTempString属性有问题-您可以将GraphView.h文件添加到问题中吗?好的,该.h文件看起来正常。我假设您的GraphView.m文件中也有@synthesis-graphTempString?好吧,我放弃了-据我所知,您所做的一切都绝对正确。如果不在我的机器上安装代码并在调试器中运行它,我想不出还有什么可以尝试的:当你发现问题出在哪里时,你能用解决方案更新问题吗?我真的很想看看发生了什么!谢谢。@Deanwombome,你能就我的问题给我一些建议吗: