文件的路径由另一个视图控制器修改

科拉多

我有2个将请求发送到Web服务的视图控制器。接收到数据后,数据将保存到“文档”文件夹中的文件中。

这些是2个VC:

Live_VC:

#import "FV_Live_ViewController.h"

@interface FV_Live_ViewController ()
@end

@implementation FV_Live_ViewController

NSArray  *paths;
NSString *documentsDirectory;
NSString *path;

- (void)viewDidLoad {

paths              = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths firstObject];

[self sendRequest];    // first request of data ("Live" data)
}

- (void)sendRequest {
// other code

// request of "Live" data
[urlRequest startWithCompletion:^(URLRequest *request, NSData *data, NSError *error, BOOL success) {
    if (success) {
        // other code

        NSString *filename = [NSString stringWithFormat:@"months.plist"];   
        path = [documentsDirectory stringByAppendingPathComponent:filename];    // path = "...\months.plist"

        // second request of data (monthly data) if months.plist doesn't exists
        if (![[NSFileManager defaultManager] fileExistsAtPath: path]) {
            [self sendMonthRequest];
        }
    }
}];
}    

- (void)sendMonthRequest {

[urlRequest startWithCompletion:^(URLRequest *request, NSData *data, NSError *error, BOOL success) {            
    if (success) {
        // other code

        [monthlyArray writeToFile: path atomically:YES];    // path should be "...\months.plist" while it is "...\yesterday.plist"
    }
}];
}

@end

Today_VC:

#import "FV_Today_ViewController.h"

@interface FV_Today_ViewController ()
@end

@implementation FV_Today_ViewController

NSArray  *paths;
NSString *documentsDirectory;
NSString *path;

- (void)viewDidLoad {

paths              = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths firstObject];

[self sendRequest];        // first call of "sendRequest" to get today data
}

- (void)sendRequest {
//  other code

// request of "Today" data
[urlRequest startWithCompletion:^(URLRequest *request, NSData *data, NSError *error, BOOL success) {
    if (success) {       
        //  other code

        NSString *filename = [NSString stringWithFormat:@"today.plist"];
        path = [documentsDirectory stringByAppendingPathComponent:filename];    // path = "...\today.plist"

        [dataDictionary writeToFile: path atomically:YES];      // save data to today.plist

        // second call of "sendRequest" to get yesterday data only if yesterday.plist doesn't already exists)           
        filename = [NSString stringWithFormat:@"yesterday.plist"];
        path = [documentsDirectory stringByAppendingPathComponent:filename];    // path = "...\yesterday.plist"
        if (![[NSFileManager defaultManager] fileExistsAtPath:path])
            [self sendRequest];
    }
}];
}

@end

在每个VC中,我都使用NSString(“路径”)存储路径,但是问题在于,在“ sendMonthRequest”方法(Live_VC)中,路径的值是在另一个VC(Today_VC)中设置的值。怎么可能呢?第二个VC如何更改第一个VC中的NSString的值?

谢谢,Corrado

德尔玛

之所以得到这个结果,是因为您将“路径”设置为文件顶部,从而使其成为全局变量。用花括号将其包围,然后它将是一个普通的ivar,

@implementation FV_Today_ViewController {

NSArray  *paths;
NSString *documentsDirectory;
NSString *path;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

文件的路径由另一个视图控制器修改

来自分类Dev

从另一个视图控制器快速修改一个变量

来自分类Dev

调用另一个视图控制器

来自分类Dev

用另一个视图控制器快速更改视图控制器

来自分类Dev

从另一个视图控制器通知视图控制器

来自分类Dev

用另一个视图控制器快速更改视图控制器

来自分类Dev

解除视图控制器并显示另一个视图控制器

来自分类Dev

如何通过控制器返回另一个控制器的局部视图?

来自分类Dev

如何从另一个视图控制器实例化导航控制器?

来自分类Dev

从一个视图控制器从另一个视图控制器加载函数

来自分类Dev

如何使用Codeigniter从另一个视图中加载视图文件而不必通过控制器?

来自分类常见问题

在另一个视图控制器中将视图控制器添加为子视图

来自分类Dev

推入另一个视图控制器时,根视图控制器的视图消失

来自分类Dev

Laravel:在另一个控制器的视图中注入一个控制器

来自分类Dev

快速从另一个视图控制器调用一个函数

来自分类Dev

如何从HTML ERB文件链接到Rails中的另一个视图(来自同一控制器)?

来自分类Dev

如何从HTML ERB文件链接到Rails中的另一个视图(来自同一控制器)?

来自分类Dev

如何关闭当前的视图控制器并在iOS中推送另一个视图控制器

来自分类Dev

在Swift中从另一个视图控制器呈现子类化的视图控制器

来自分类Dev

使用委托从模态视图控制器调用另一个视图控制器中的方法

来自分类Dev

从另一个视图控制器动态更改视图控制器的主题而无需重新加载

来自分类Dev

如何在集合视图控制器上添加另一个滚动视图?

来自分类Dev

通过放置在另一个视图内的控制器/视图发出加载数据

来自分类Dev

如何在集合视图控制器上添加另一个滚动视图?

来自分类Dev

表视图单元格到另一个视图控制器

来自分类Dev

如何从另一个视图控制器iOS刷新表视图?

来自分类Dev

使用分段控制器删除当前视图并添加另一个视图

来自分类Dev

如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

来自分类Dev

如何在另一个视图控制器中调用另一个方法?

Related 相关文章

  1. 1

    文件的路径由另一个视图控制器修改

  2. 2

    从另一个视图控制器快速修改一个变量

  3. 3

    调用另一个视图控制器

  4. 4

    用另一个视图控制器快速更改视图控制器

  5. 5

    从另一个视图控制器通知视图控制器

  6. 6

    用另一个视图控制器快速更改视图控制器

  7. 7

    解除视图控制器并显示另一个视图控制器

  8. 8

    如何通过控制器返回另一个控制器的局部视图?

  9. 9

    如何从另一个视图控制器实例化导航控制器?

  10. 10

    从一个视图控制器从另一个视图控制器加载函数

  11. 11

    如何使用Codeigniter从另一个视图中加载视图文件而不必通过控制器?

  12. 12

    在另一个视图控制器中将视图控制器添加为子视图

  13. 13

    推入另一个视图控制器时,根视图控制器的视图消失

  14. 14

    Laravel:在另一个控制器的视图中注入一个控制器

  15. 15

    快速从另一个视图控制器调用一个函数

  16. 16

    如何从HTML ERB文件链接到Rails中的另一个视图(来自同一控制器)?

  17. 17

    如何从HTML ERB文件链接到Rails中的另一个视图(来自同一控制器)?

  18. 18

    如何关闭当前的视图控制器并在iOS中推送另一个视图控制器

  19. 19

    在Swift中从另一个视图控制器呈现子类化的视图控制器

  20. 20

    使用委托从模态视图控制器调用另一个视图控制器中的方法

  21. 21

    从另一个视图控制器动态更改视图控制器的主题而无需重新加载

  22. 22

    如何在集合视图控制器上添加另一个滚动视图?

  23. 23

    通过放置在另一个视图内的控制器/视图发出加载数据

  24. 24

    如何在集合视图控制器上添加另一个滚动视图?

  25. 25

    表视图单元格到另一个视图控制器

  26. 26

    如何从另一个视图控制器iOS刷新表视图?

  27. 27

    使用分段控制器删除当前视图并添加另一个视图

  28. 28

    如何将数据从一个视图控制器传递到另一个视图控制器,并且在视图控制器之间有一个显示视图控制器

  29. 29

    如何在另一个视图控制器中调用另一个方法?

热门标签

归档