-1

我能够解析 JSON 并将其存储NSMutableArray在我的 .json 文件中名为 json 的文件中FirstViewController。问题是,我不知道如何FirstViewController从我的视图控制器访问我的数组。

编辑!!!

我将代码从 AppDelegate 移到了我的 FirstViewController,因为这不是一个好习惯。

第一视图控制器.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController
{
    NSMutableArray *jsonData;
}

@property (nonatomic, strong) NSMutableArray *jsonData;

@end

第一视图控制器.m

@synthesize jsonData;

NSURL *url = [NSURL URLWithString:@"http://search.twitter.com/search.json?q=coredata"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
self.json = [NSJSONSerialization JSONObjectWithData:response options:0 error:&jsonParsingError];

SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.secondJSON = [self jsonData];
[[self navigationController] pushViewController:secondViewController animated:YES];

SecondViewController.h

#import <UIKit/UIKit.h>

@interface SecondViewController : UIViewController
{
    NSMutableArray *secondJSON;
}

@property (nonatomic, strong) NSMutableArray *secondJSON;

@end

第二视图控制器.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"%@", [self secondJSON]);
}

输出

2013-02-03 00:16:17.749 Subscription[24669:c07] (null)

我错过了什么吗?

4

6 回答 6

2

也许[[[UIApplication sharedApplication] delegate] json]

(并且请不要在应用程序启动时在主线程上发送同步请求!

于 2013-02-02T06:05:06.363 回答
2

首先,如果您使用的是 ARC,请更改

@property (nonatomic, retain) NSMutableArray *json;

@property (nonatomic, strong) NSMutableArray *json;

因为保留使您对弱的引用变得卑鄙。

第二个在您的视图控制器使用中访问

AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//appDelegate.json //Your Array

你为什么不直接在你的viewController中实现这个方法,AppDelegate类应该尽可能干净。

于 2013-02-02T06:12:03.720 回答
1

您可以在您的期望视图中创建应用程序委托的实例并调用其对象。

AppDelegate *appDelegate = (AppDelegate*) [[UIApplication sharedApplication] 委托];
NSMutableArray *arMyArray = [NSMutableArray arrayWithArray:[appDelegate.json mutableCopy]];
于 2013-02-02T06:07:41.583 回答
1

试试这个,

     AppDelegate *appobj =  [[UIApplication sharedApplication] delegate];
     NSLog(@"%@",appobj.json);
于 2013-02-02T06:10:39.207 回答
1

在要访问 json 数组的视图控制器中,像这样创建 appdelegate 的实例:

AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

然后通过使用此实例变量访问 json 数组。

 NSMutableArray *arMyArray = [[NSMutableArray alloc]initWithAaray:appdelegate.json];
于 2013-02-02T06:27:43.173 回答
1

NSMutableArray *listOfData 在你SecondViewController喜欢的地方创造

#import <UIKit/UIKit.h>
    
    @interface SecondViewController : UIViewController
    
    @property (nonatomic, strong) NSMutableArray *listOfData;
    
    @end

并在您导航时传递NSMutableArray *jsonData;给您。 (在创建 SecondViewController 的对象)之类的,SecondViewController

这段代码写在 FirstViewController

 SecondViewController *lvController = [[SecondViewController alloc] init];
 lvController.listOfData = self.jsonData;
 [self.navigationController pushViewController:lvController animated:YES];

viewDidLoad并在方法中检查它SecondViewController,例如

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"My Data : %@", self.listOfData);
}
于 2013-02-02T07:13:09.173 回答