-1

JSON を解析して、NSMutableArray.json という名前のファイルに保存することができましたFirstViewControllerFirstViewController問題は、 View Controller から自分の配列にアクセスする方法がわからないことです。

編集!!!

コードを AppDelegate から FirstViewController に移動したのは、適切な方法ではないためです。

FirstViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController
{
    NSMutableArray *jsonData;
}

@property (nonatomic, strong) NSMutableArray *jsonData;

@end

FirstViewController.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

SecondViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

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

出力

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

何か不足していますか?

4

6 に答える 6

2

まず、ARCを使用している場合は、変更します

@property (nonatomic, retain) NSMutableArray *json;

@property (nonatomic, strong) NSMutableArray *json;

保持すると、あなたの卑劣な言及が弱くなります。

ビューコントローラで2番目にアクセスするには

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

このメソッドをviewControllerに直接実装してみませんか。AppDelegateクラスは可能な限りクリーンにする必要があります。

于 2013-02-02T06:12:03.720 に答える
2

おそらく[[[UIApplication sharedApplication] delegate] json]

(そして、アプリケーションの起動中にメイン スレッドで同期要求を送信しないでください! )

于 2013-02-02T06:05:06.363 に答える
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 に答える
1

これを試して、

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

目的のビューで Application Delegate のインスタンスを作成し、そのオブジェクトを呼び出すことができます。

AppDelegate *appDelegate = (AppDelegate*) [[UIApplication sharedApplication] デリゲート];
NSMutableArray *arMyArray = [NSMutableArray arrayWithArray:[appDelegate.json mutableCopy]];
于 2013-02-02T06:07:41.583 に答える
1

json 配列にアクセスするビュー コントローラーで、次のように appdelegate のインスタンスを作成します。

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

その後、このインスタンス変数を使用して json 配列にアクセスします。

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