SBJson int parsing - PullRequest
       9

SBJson int parsing

1 голос
/ 06 августа 2011

У меня есть строка json:

{"1":{"homeTeam":"Home01","awayTeam":"Away01","homeScore":0,"awayScore":0,"gameID":1},"2":{"homeTeam":"Home11","awayTeam":"Away11","homeScore":0,"awayScore":0,"gameID":2},"3":{"homeTeam":"Home21","awayTeam":"Away21","homeScore":0,"awayScore":0,"gameID":3}}

, которую я хотел бы превратить в класс Objective-C:

#import <Foundation/Foundation.h>


@interface ScoreKeeperGame : NSObject {

}

@property (nonatomic, retain) NSString *homeTeam;
@property (nonatomic, retain) NSString *awayTeam;
@property (nonatomic, assign) int homeScore;
@property (nonatomic, assign) int awayScore;
@property (nonatomic, assign) int gameID;

- (id) init: (NSString *) homeTeam 
   awayTeam: (NSString *) awayTeam;

- (id) init: (NSDictionary *) game;

@end

Я передаю json с помощью NSDictionary "game"(строка json представляет хэш-карту, поэтому первая игра такова):

{"homeTeam":"Home01","awayTeam":"Away01","homeScore":0,"awayScore":0,"gameID":1}

Когда я пытаюсь использовать этот класс:

#import "ScoreKeeperGame.h"


@implementation ScoreKeeperGame
@synthesize homeTeam=_homeTeam, awayTeam = _awayTeam, homeScore = _homeScore, awayScore     = _awayScore, gameID = _gameID;

- (id) init: (NSString *) homeTeam 
   awayTeam: (NSString *) awayTeam
{
    self = [super init];
    self.homeTeam = homeTeam;
    self.awayTeam = awayTeam;

NSLog(@"away: %@", awayTeam);
return self;
}

- (id) init: (NSDictionary *) game
{
    self = [super init];
    if(self)
    {
    self.homeTeam = [game objectForKey:@"homeTeam"];
    self.awayTeam = [game objectForKey:@"awayTeam"];
    self.awayScore = (int) [game objectForKey:@"awayScore"];
    self.gameID = [game objectForKey:@"gameID"];

    NSLog(@"game awayScore: %d", self.awayScore);
    NSLog(@"game gameID: %@", [NSNumber numberWithInt:self.gameID]);
    }
return self;
}

@end

Атрибут awayScore и gameId печатаются большими числами(может указатели)?

Я пробовал

self.awayScore = [NSNumber numberWithInt: [game objectForKey:@"awayScore"]];

Но, похоже, это тоже не сработало.

Как получить значение int из игрового объекта?

po game производит:

{
awayScore = 0;
awayTeam = Away01;
gameID = 1;
homeScore = 0;
homeTeam = Home01;
}

Спасибо!

Ответы [ 3 ]

3 голосов
/ 06 августа 2011

Сначала вы должны вытащить его как номер NS.

NSNumber *myNum = [game objectForKey:@"awayScore"];

self.awayScore = [myNum intValue];

Дох!

1 голос
/ 06 августа 2011

вы можете попробовать это, если хотите получить целочисленное значение из вашего ответа JSON

self.awayScore = [NSNumber numberWithInt: [[game objectForKey:@"awayScore"] intValue]];

как ваш ответ будет в nsstring.

0 голосов
/ 27 апреля 2013

iOs 6.0, теперь это просто [game [@ "awayScore]] intValue]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...