2011-08-25 44 views
1

我使用以下日期是在JSON parisng數據如何獲得在iPhone應用程序從JSON數據的整數值

[ 
{ 
    "categoryId": 202, 
    "name": "Sport" 
}, 
{ 
    "categoryId": 320, 
    "name": "Fritid" 
}, 
{ 
    "categoryId": 350, 
    "name": "Kultur" 
}, 
{ 
    "categoryId": 4920, 
    "name": "Diverse" 
}, 
{ 
    "categoryId": 4774, 
    "name": "Samfunn" 
} ] 

使用Follwing代碼

SBJsonParser *parser = [[SBJsonParser alloc] init]; 

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.krsconnect.no/community/api.html?method=categories&appid=620&mainonly=true"]]; 
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
NSDictionary *object = [parser objectWithString:json_string error:nil]; 
//appDelegate.books = [[NSMutableArray alloc] initWithCapacity:0]; 

appDelegate.books = [[NSMutableArray alloc] init]; 

NSArray *results = [parser objectWithString:json_string error:nil]; 
for (int i=0; i<[results count]; i++) { 
    Book *aBook = [[Book alloc] initWithDictionary:[results objectAtIndex:i]]; 
    [appDelegate.books addObject:aBook]; 


    [aBook release]; 

    } 

圖書類

@interface Book : NSObject { 


NSString *catId; 


NSString *name; 

    } 

    @property(nonatomic,retain)NSString*catId; 

    @property(nonatomic,retain) NSString *name; 

    @end 


    #import "Book.h" 


@implementation Book 


@synthesize catId,name; 

-(id)init{ 
    self=[super init]; 
} 

- (id)initWithDictionary:(NSDictionary*) dict { 
    self.catId = [dict valueForKey:@"categoryId"]; self.name = 
    [dict valueForKey:@"name"]; 
    return self; 
} 
+0

我的問題是,我沒有得到價值catid – ali

+0

我給出的代碼initWithDict – ali

+0

catid顯示其不是CFSting – ali

回答

6

那是因爲CatId是tyoe NSString

更改爲NSNumber並嘗試

希望這會有所幫助。

+0

如果我使用NSInteger它給出了這個值在catid 79765008 – ali

+0

多數民衆贊成多數民黨這是因爲它給變量地址的指針變量 – Robin

+0

使用intValue方法你nsinteger變量 – Robin

2

當你解析categoryId的響應時,你似乎得到了NSNumber。所以嘗試通過取得NSString的NSNumber對象。

+0

你能幫助我怎麼做,我已經做了,但沒有成功 – ali

0

您收到的字典可能會將數值存儲爲NSNumber對象。所以你的catId也應該是NSNumber,或者-initWithDictionary:應該使用例如類別id將類別id提取爲原語類型。 -intValue和catId應該被聲明爲int

順便說一下,您應該使用-objectForKey:NSDictionary s獲取對象。由於-valueForKey:執行了一些額外的處理,因此性能稍微高一些,然後調用-objectForKey:

json_string泄漏,所以可以自由地appDelegate.books

相關問題