类之间的NSString [英] NSString between classes

查看:102
本文介绍了类之间的NSString的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在我的应用程序的两个类之间传递一个NSString(从ViewController Class_A到ViewController Class_B),我在StackOverflow上搜索,但这是我的情况的简化代码:



Class_A.h

  #importClass_B.h

@interface ViewController: UIViewController {
NSString * stringToPass;
}

@property(retain,nonatomic)NSString * stringToPass;
- (NSString *)stringPassage:(id)sender;

@end

Class_A.m

   - (NSString *)stringPassage:(id)sender {
NSString * string = @A FANTASTIC STRING! //这里我定义string INTO - (NSString *)方法
NSLog(@String to pass:%@,string);
return string;
}

Class_B.h

  #importClass_A.h

Class_B.m

   - (void)viewDidLoad 
{
[super viewDidLoad];

Class_A * Class_A_Instance = [[Class_A alloc] init];
NSString * importedString = [Class_A_Instance stringPassage:self];
[Class_A_Instance release];

NSLog(@Received String:%@,importedString);

//从其nib加载视图后执行任何其他设置。
}

好吧,它的作用就像一个魅力!当Class_B加载时,我可以在日志输出中读取String to pass:A FANTASTIC STRING!和Received String:A FANTASTIC STRING!;但如果我只改变这部分代码(我需要它!):



Class_A.m

   - (void)viewDidLoad 
{
[super viewDidLoad];

stringToPass = @ANOTHER FANTASTIC STRING!;

//在加载视图之后执行任何其他设置,通常来自nib。
}

- (NSString *)stringPassage:(id)sender {
NSString * string = stringToPass; //这里我必须调用字符串FROM另一个Class_A方法(在这个例子中是从 - (void)viewDidLoad
NSLog(@String to pass:%@,string);
return string;
}



我可以在日志输出中读取String to pass: obvReceived String:(null);它令人难以置信,因为我可以将全局变量* stringToPass完全传递给Class_A的每个方法,除了这个 - (NSString *)方法。

解决方案

让我们有两个viewControllers,即FirstVC和SecondVC。
在SecondVC中创建一个字符串,



@interface SecondVC:UIViewController {NSString * string2pass;}

@property(retain,nonatomic)NSString * string2pass;

在FirstVC中要显示SecondVC时,传递字符串为

   - (void)presentSecondView 
{
SecondVC * secondVC = [[SecondVC alloc] initWithNibName:@SecondVCbundle:nil];

secondVC.string2pass = @这是一个传递字符串;

[self presentModalViewController:resView animated:YES];

}
- (void)viewDidLoad
{
NSString * string4mFirstVC = string2Pass
}
pre>

I need to pass a NSString between two Classes (from ViewController Class_A to ViewController Class_B) of my app, I have searched on StackOverflow but this is the simplified code of my situation:

Class_A.h

#import "Class_B.h"

@interface ViewController : UIViewController {
    NSString *stringToPass;
}

@property (retain, nonatomic) NSString *stringToPass;
-(NSString *)stringPassage:(id)sender;

@end

Class_A.m

- (NSString *)stringPassage:(id)sender{
    NSString *string = @"A FANTASTIC STRING!"; //here I define string INTO the - (NSString *) method
    NSLog(@"String to pass: %@",string);
    return string;
}

Class_B.h

#import "Class_A.h"

Class_B.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    Class_A *Class_A_Instance = [[Class_A alloc] init];
    NSString *importedString = [Class_A_Instance stringPassage:self];
    [Class_A_Instance release];

    NSLog(@"Received String: %@",importedString);

    // Do any additional setup after loading the view from its nib.
}

Well, it works like a charm! When Class_B is loaded I can read in the log output "String to pass: A FANTASTIC STRING!" and "Received String: A FANTASTIC STRING!"; but if I change only this parts of code (I need it!):

Class_A.m

 - (void)viewDidLoad
{
    [super viewDidLoad];

    stringToPass = @"ANOTHER FANTASTIC STRING!";

        // Do any additional setup after loading the view, typically from a nib.
   }

- (NSString *)stringPassage:(id)sender{
    NSString *string = stringToPass; // here I must call the string FROM another method of Class_A (in this example from - (void)viewDidLoad
    NSLog(@"String to pass: %@",string);
    return string;
}

I can read in the log output "String to pass: (null)" and obv "Received String: (null)"; Its incredible because I can pass the global variable *stringToPass to every method of Class_A perfectly, except for this -(NSString *) method. So what is the problem? Thanks!

解决方案

Let we have two viewControllers i.e FirstVC and the SecondVC. Make a string in SecondVC ,

@interface SecondVC : UIViewController { NSString *string2pass; }

@property (retain, nonatomic) NSString *string2pass;

In FirstVC when you are going to present SecondVC, pass the string as,

- (void)presentSecondView 
  { 
    SecondVC *secondVC = [[SecondVC alloc]initWithNibName:@"SecondVC" bundle:nil]; 

    secondVC.string2pass = @"this is a passing string";

   [self presentModalViewController:resView animated:YES];

  }    
- (void)viewDidLoad 
  { 
      NSString *string4mFirstVC = string2Pass 
  }

这篇关于类之间的NSString的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆