2

取り込んだ JSON データにアクセスするのに少し問題があります。次のように、JSONModel を使用して JSON データを取得しています。

私の LeftViewController.m の上部

@interface LeftViewController ()
{
    PostgresFeed* _feed;
}

そして、下に:

-(void)viewDidAppear:(BOOL)animated
{

JSONHTTPClient getJSONFromURLWithString:@"myurl" completion:^(NSDictionary *json,  JSONModelError *err) {
NSError *error = nil;

       _feed = [[PostgresFeed alloc] initWithDictionary:json error:&error];

       NSLog(@"Players: %@", feed.player);

       [self.tableView reloadData];

    }];
}

-(void)fetchedData:(NSData *)responseData
{
     NSError* error;
     NSDictionary* playerData = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

     NSMutableDictionary* player = [playerData objectForKey:@"player"];
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder])
    {
        _feed.player = [NSMutableArray array];
    }
return self;
}

そして私のPostgresFeed.hで

@property (nonatomic, strong) NSString *playerName;
@property (nonatomic, strong) NSString *currentScore;
@property (nonatomic, strong) NSArray *totalPenalties;
@property (nonatomic, strong) NSString *timePlayed;

そして私のPostgresFeed.mには何もありません

このようにすると、MasterDetail の tableView である LeftViewController に必要なすべてのデータが取得されます。を見るとNSLog(@"Players: %@", feed.player);、データベースから必要なすべてのデータを取得していることがわかります。

DetailViewController に入力する必要があることがわかっているこのデータにアクセスするにはどうすればよいですか? NSUserDefaults を使用する必要がありますか? このデータを取得、解析、および保持する新しいクラスを作成する必要がありますか?

私はこれに慣れていないので、チュートリアル、またはチュートリアルのような指示を教えていただければ幸いです。さらにコードや詳細が必要な場合は、お知らせください。

****編集****

@soryngod の提案に従って NSNotificationCenter を適用すると、RightViewController で次の出力が得られますNSLog(@"%@", notification.userinfo);

    2013-07-04 12:20:26.208 PlayerTracking[25777:11303] {
    player =     (
                {
            currentScore = "4";
            totalPenalties =             (
            );
            id = 9;
            name = "Jakob Melon";
            timeStarted = "2013-06-05 19:56:10";
        },
                {
            currentScore = 16;
            totalPenalties =             (
            );
            id = 10;
            name = "John China";
            timeStarted = "2013-06-06 17:21:300";
        },
                {
            currentScore = 178;
            totalPenalties =             (
            );
            id = 11;
            name = "Jason Dog";
            timeStarted = "2013-06-07 19:26:10";
        },
                {
            currentScore = 1233;
            totalPenalties =             (
            );
            id = 12;
            name = "Fox Wolfe";
            timeStarted = "2013-06-05 19:56:10";
        },
                {
            currentScore = 234;
            totalPenalties =             (
            );
            id = 13;
            name = "Dakota Cool";
            timeStarted = "2013-06-05 19:56:10";
        },
                {
            currentScore = "34234";
            totalPenalties =             (
            );
            id = 14;
            name = "Max Face";
            timeStarted = "2013-06-05 19:00:30";
        },
                {
            currentScore = "2342";
            totalPenalties =             (
            );
            id = 15;
            name = "Jonatan Blah";
            timeStarted = "2013-06-05 18:00:30";
        },
                {
            currentScore = "234234";
            totalPenalties =             (
            );
            id = 16;
            name = "Thomas Bus";
            timeStarted = "2013-06-05 19:56:10";
        },
                {
            currentScore = 34566;
            totalPenalties =             (
            );
            id = 17;
            name = "Super Cake";
            timeStarted = "2013-06-05 17:51:30";
        },
                {
            currentScore = "23463";
            totalPenalties =             (
            );
            id = 18;
            name = "Duke Nukem";
            timeStarted = "2013-06-07 19:26:10";
        },
                {
            currentScore = "12362";
            totalPenalties =             (
            );
            id = 19;
            name = "Gordon Freeman";
            timeStarted = "2013-06-05 19:56:10";
        }
    );
}

名前は気にしないでください。

4

1 に答える 1

2

[NSNotificationCenter defaultCenter]を使用してuserInfoを DetailControllerに投稿できます。データを受信したら、フィードで通知を投稿し、それをDetailController で処理します。

より明確にするには:

これを DetailViewController viewDidLoadに追加します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"myNotification" object:nil];

次に、メソッドを作成します。

- (void) handleNotification:(NSNotification *) notification
{//Your information
NSLog(@"%@",notification.userInfo);
}

そして、次のように投稿する JSON を受け取る場所から:

[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification" object:nil userInfo:yourDictionary];

これが役立つかどうか教えてください。

于 2013-07-04T13:37:44.547 に答える