강하게 입력 된 객체에 배치하려는 배열을 채 웁니다. json 데이터로 채워진이 코드가 있고이 데이터로 Setting 개체를 채우고 싶습니다. 어떻게해야합니까?json 배열에서 강력한 형식의 객체 만들기
JSON 응답 :
GOT의 응답으로서 :
[
{
"CatalogID":2377,
"Category":"Frozen",
"Facings":true,
"ID":13,
"LastUpdateDateTime":"\/Date(1348681365520-0700)\/",
"Quantity":true
},
{
"CatalogID":2377,
"Category":"Fruit",
"Facings":true,
"ID":10,
"LastUpdateDateTime":"\/Date(1348692069843-0700)\/",
"Quantity":false
},
{
"CatalogID":2377,
"Category":"Salads",
"Facings":true,
"ID":12,
"LastUpdateDateTime":"\/Date(1348681354807-0700)\/",
"Quantity":true
},
{
"CatalogID":2377,
"Category":"Vegetables",
"Facings":true,
"ID":11,
"LastUpdateDateTime":"\/Date(1348681334523-0700)\/",
"Quantity":true
}
]
오브젝티브 C
-(void) connectionDidFinishLoading:(NSURLConnection *)connection {
NSError *error = nil;
// Get the JSON data from the website
id result = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error];
NSStringEncoding responseEncoding = NSUTF8StringEncoding;
if ([response textEncodingName]) {
CFStringEncoding cfStringEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)[response textEncodingName]);
if (cfStringEncoding != kCFStringEncodingInvalidId) {
responseEncoding = CFStringConvertEncodingToNSStringEncoding(cfStringEncoding);
}
}
if(receivedData)
{
NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:responseEncoding];
NSLog(@"Got response as %@", dataString);
}
if ([result isKindOfClass:[NSArray class]]) {
for (NSArray *item in result) {
NSArray *items = [item valueForKey:@"ID"];
[_settings addObject:items];
// Try to populate Setting object
Setting *setting = (Setting *)[_settings objectAtIndex:0];
NSLog(@"Setting: %@", setting);
}
}
else {
NSDictionary *jsonDictionary = (NSDictionary *)result;
for(NSDictionary *item in jsonDictionary)
NSLog(@"Item: %@", item);
}
NSLog(@"Finished");
}
Setting.h
@interface Setting : NSObject {
NSString *_settingsID;
NSString *_catalogID;
NSString *_category;
NSString *_facings;
NSString *_quantity;
}
@property (nonatomic, retain) NSString *settingsID;
@property (nonatomic, retain) NSString *catalogID;
@property (nonatomic, retain) NSString *category;
@property (nonatomic, retain) NSString *facings;
@property (nonatomic, retain) NSString *quanity;
- (Setting *)initWithName:(NSString *)settingsID desc:(NSString *)category;
@end
Setting.m
,617,@implementation Setting
@synthesize settingsID = _settingsID;
@synthesize catalogID = _catalogID;
@synthesize category = _category;
@synthesize facings = _facings;
@synthesize quanity = _quantity;
- (Setting *)initWithName:(NSString *)settingsID desc:(NSString *)category CategoryID:(NSString *)catalogID Facings:(NSString *)facings Quantity:(NSString *)quantity {
if ((self = [super init])) {
self.settingsID = settingsID;
self.catalogID = catalogID;
self.category = category;
self.facings = facings;
self.quanity = quantity;
}
return self;
}
@end
무엇이 작동하지 않습니까? – rdelmar
어떻게 채울 지 모르겠습니다. 나는 noobie 질문을 알고 있지만 iOS 프로그래밍을 처음 접했습니다. 어떤 도움이라도 대단히 감사하겠습니다. – brianhevans
그 점을 알려 드릴 수는 있지만 결과가 실제로 무엇인지 확인하는 것이 좋습니다. 그래서, 만약 당신이 할 수 있다면, "if ([result isKindOfClass : [NSArray class]])"결과를 기록하고 그것을 보여주기 위해 글을 편집하십시오. – rdelmar