使用在viewDidLoad中创建内部的另一种方法的NSString变量(Use NSString

2019-07-31 05:19发布

在我viewDidLoad方法中,我设置下面的变量:

// Get requested URL and set to variable currentURL
NSString *currentURL = self.URL.absoluteString;
//NSString *currentURL = mainWebView.request.URL.absoluteString;
NSLog(@"Current url:%@", currentURL);

//Get PDF file name
NSArray *urlArray = [currentURL componentsSeparatedByString:@"/"];
NSString *fullDocumentName = [urlArray lastObject];
NSLog(@"Full doc name:%@", fullDocumentName);

//Get PDF file name without ".pdf"
NSArray *docName = [fullDocumentName componentsSeparatedByString:@"."];
NSString *pdfName = [docName objectAtIndex:0];

我想能够使用这些变量中的另一种方法(即- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

如何重新viewDidLoad方法之外的这些变量? 我是个新手...帮助将这么多的赞赏

Answer 1:

让他们一个实例变量 ,而不是一个局部变量你使用的方法。 在此之后,你可以从同一类的所有方法访问它们。

例:

@interface MyClass: NSObject {
    NSString *currentURL;
    // etc.
}

- (void)viewDidLoad
{
    currentURL = self.URL.absoluteString;
    // etc. same from other methods
}


Answer 2:

在你的类中“全局变量”(如你说的标签)方面在其中定义viewDidLoad中创建它们的实例变量。

在你之类的.H

@interface MyViewController : UIViewController 
{
    NSArray *docName;
    NSString *pdfName;
    ...
}


Answer 3:

在您的@interface (在.h文件)包括如下:

@property (nonatomic, strong) NSString *currentURL;
// the same for the rest of your variables.

现在,你就可以通过调用来访问这些属性self.currentURL 。 如果这是一个新的项目,ARC已打开,您不必对自己管理内存打扰。



Answer 4:

让他们的实例变量作为H2CO3建议。 你也可以只获得在actionSheet所有的变量:clickedButtonAtIndex功能本身。

我注意到,所有需要的变量从self.URL.absoluteString的。 因此,应该将所有的代码没有问题,因为self.URL是抱着你想要什么你的实例变量。

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// Get requested URL and set to variable currentURL
NSString *currentURL = self.URL.absoluteString;
//NSString *currentURL = mainWebView.request.URL.absoluteString;
NSLog(@"Current url:%@", currentURL);

//Get PDF file name
NSArray *urlArray = [currentURL componentsSeparatedByString:@"/"];
NSString *fullDocumentName = [urlArray lastObject];
NSLog(@"Full doc name:%@", fullDocumentName);

//Get PDF file name without ".pdf"
NSArray *docName = [fullDocumentName componentsSeparatedByString:@"."];
NSString *pdfName = [docName objectAtIndex:0];

// Do what you need now...
}


文章来源: Use NSString variable created in viewDidLoad inside another method