Wie man einen integer-Wert vom JSON-Daten, die in iphone-Anwendung
Ich bin parisng Daten mit dem folgenden Datum, das im JSON -
[
{
"categoryId": 202,
"name": "Sport"
},
{
"categoryId": 320,
"name": "Fritid"
},
{
"categoryId": 350,
"name": "Kultur"
},
{
"categoryId": 4920,
"name": "Diverse"
},
{
"categoryId": 4774,
"name": "Samfunn"
} ]
Mit Folgendem Code
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];
}
Buch Klasse
@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;
}
- meine Frage ist, dass ich nicht immer Wert catid
- ich habe code der initWithDict
- catid zeigt Ihr nicht ein CFSting
- {categoryId = 202; name = Sport; }, { categoryId = 320; name = Fritid; }, { categoryId = 350; name = Kultur; }, { categoryId = 4920; name = Vielfältig; }, { categoryId = 4774; name = Samfunn; } )
- dies ist das Ergebnis der nslog(@"%@",Ergebnis);
- Kannst du bitte Aufräumen der Formatierung von code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
ist, weil
CatId
ist der tyoeNSString
Ändern
NSNumber
und versuchenHoffe, das hilft.
NSInteger
, es ist einNSNumber
.Scheint es, dass Sie immer NSNumber beim analysieren der Antwort auf categoryId. So versuchen, durch die Einnahme von NSNumber-Objekt inplace von NSString.
Dem Wörterbuch, das Sie immer speichert numerische Werte als
NSNumber
Objekte wohl. So IhrcatId
sollte entweder einNSNumber
auch , oder-initWithDictionary:
sollte, extrahieren Sie die Kategorie-id in einen primitiven Typ mit z.B.-intValue
und catId sollte dann erklärt werden wieint
.Durch die Art und Weise, die Sie verwenden sollten
-objectForKey:
um Objekte ausNSDictionary
s. Es ist unwesentlich mehr Leistung bietet, da-valueForKey:
hat einige zusätzliche Verarbeitung, ruft dann-objectForKey:
.Auch
json_string
Lecks und so robably hatappDelegate.books
.