проблема в строке копирования для другого класса - PullRequest
0 голосов
/ 06 апреля 2011

В моем приложении я отправляю запрос на веб-сервер и получаю некоторые результаты, затем анализирую этот результат и сохраняю эту строку результата в строку объекта другого класса.

Например:

@interface GraphView : UIViewController<UITabBarControllerDelegate> {  

NSMutableString *graphTempString;   

}
@property(nonatomic,retain) NSMutableString *graphTempString;   
@end  

TSUClass .m

implementing NSURLConnection(),  
connectionDidFinishLoading(),

-(void) parser:(NSXMLParser *) parser didStartElement:(NSString *) elementName 
 namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *) qName
attributes:(NSDictionary *) attributeDict()  

-(void)parser:(NSXMLParser *)parser 
didEndElement:(NSString *)elementName 
 namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName
{  
    if( [elementName isEqualToString:@"statusTEResult"])  
    {  
        tempString=soapResults;   
        if (grpahCall == YES) {         
            graphViewController=[[GraphView alloc]init];   
            graphViewController.graphTempString=tempString;  

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

Когда я отлаживаю, я вижу значение graphViewController.graphTempString, но после перехода к GraphView я не могу увидеть значения.

Надеюсь, кто-нибудь знает, как решить эту проблему.

Ответы [ 4 ]

0 голосов
/ 06 апреля 2011

Что произойдет, если вы добавите несколько операторов NSLog?

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

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

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

Я бы ожидал увидеть один и тот же вывод дважды? Можете ли вы сказать мне, что вы получаете в консоли?

0 голосов
/ 06 апреля 2011

Можете ли вы попробовать

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

удачи

0 голосов
/ 06 апреля 2011

@ Пуджа, я предлагаю вам попробовать сделать это, сделав переменную в классе AppDelegate, передайте resultString этой переменной, а затем получите значение из этой переменной в вашем 2ndClass или в любом другом классе, который вы хотите .. ... вы никогда не получите нулевое значение.

Предположим, что объект вашего класса AppDelegate равен appDelegate, а переменная типа NSString позволяет stringValue. Тогда в вашем классе, где вы получаете resultString, сделайте вот так.

appDelegate.stringValue = resultString;

А в вашем 2ndClass классе возьмите значение из этой переменной следующим образом.

tempString =  appDelegate.stringValue;

Вы получите данные ..... Надеюсь, вы поняли мою точку зрения.

Удачи!

0 голосов
/ 06 апреля 2011

Простой способ передачи значения.

[[NSUserDefaults standardUserDefaults]setObject:resultString forKey:@"resultString"];
[[NSUserDefaults standardUserDefaults] synchronize];

и в другом классе используйте это значение следующим образом

NSString *resultString=[[NSUserDefaults standardUserDefaults]valueForKey:@"resultString"];

или вы можете сделать это следующим образом.

graphViewController.graphTempString=self.tempString; 
...