2016-02-15 2 views
0
{ 
    "restaurants" : [ 
    { 
     "name": "Hopdoddy Burger Bar", 
     "backgroundImageURL": "http://sandbox.bottlerocketapps.com/BR_iOS_CodingExam_2015_Server/Images/hopdoddy.png", 
     "category" : "Burgers", 
      "contact": { 
       "phone": "9723872337", 
       "formattedPhone": "(972) 387-2337", 
       "twitter": "hopdoddy" 
      }, 
      "location": { 
       "address": "5100 Belt Line Road, STE 502", 
       "crossStreet": "Dallas North Tollway", 
       "lat": 32.950787, 
       "lng": -96.821118, 
       "postalCode": "75254", 
       "cc": "US", 
       "city": "Addison", 
       "state": "TX", 
       "country": "United States", 
       "formattedAddress": [ 
        "5100 Belt Line Road, STE 502 (Dallas North Tollway)", 
        "Addison, TX 75254", 
        "United States" 
       ] 
      } 
    }, 
    { 
     "name": "Pappadeaux Seafood Kitchen", 
     "backgroundImageURL": "http://sandbox.bottlerocketapps.com/BR_iOS_CodingExam_2015_Server/Images/pappadeaux.png", 
     "category": "Seafood", 
      "contact": { 
       "phone": "9724479616", 
       "formattedPhone": "(972) 447-9616", 
       "twitter": "pappadeaux" 
      }, 
      "location": { 
       "address": "18349 Dallas Pkwy", 
       "crossStreet": "at Frankford Rd.", 
       "lat": 32.99908456526653, 
       "lng": -96.83018780592823, 
       "postalCode": "75287", 
       "cc": "US", 
       "city": "Dallas", 
       "state": "TX", 
       "country": "United States", 
       "formattedAddress": [ 
        "18349 Dallas Pkwy (at Frankford Rd.)", 
        "Dallas, TX 75287", 
        "United States" 
       ] 
      } 
    }, 
{ 
     "name": "Buffalo Wild Wings", 
     "backgroundImageURL": "http://sandbox.bottlerocketapps.com/BR_iOS_CodingExam_2015_Server/Images/buffalo_wild_wings.png", 
     "category": "Wing Joint", 
      "contact": { 
       "phone": "9727019464", 
       "formattedPhone": "(972) 701-9464", 
       "twitter": "bwwings" 
      }, 
      "location": { 
       "address": "5000 Belt Line Rd Ste 100", 
       "crossStreet": "at Quorum Dr", 
       "lat": 32.95347617827522, 
       "lng": -96.82554602622986, 
       "postalCode": "75254-6752", 
       "cc": "US", 
       "city": "Dallas", 
       "state": "TX", 
       "country": "United States", 
       "formattedAddress": [ 
        "5000 Belt Line Rd Ste 100 (at Quorum Dr)", 
        "Dallas, TX 75254-6752", 
        "United States" 
       ] 
      } 
    } 
    ] 
} 

Это JSON Я пытаюсь разобрать в iOS. Я создал объекты Model со всеми необходимыми параметрами. Я могу разобрать и извлечь все данные, кроме backgroundImageURL. Я получаю NSUnknownKeyException. Может кто-то помочь мне с этим?Невозможно разобрать только изображениеURL от JSON в iOS

Ниже приведен код, используемый для создания объектов модели и добавления их в массив.

[self.restaurantsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 

     Restaurant *restaurant = [[Restaurant alloc]init]; 
     restaurant.name = [obj objectForKey:@"name"]; 
     restaurant.imageURL = [obj objectForKey:@"backgroundImageURL"]; 
     restaurant.category = [obj objectForKey:@"category"]; 
     restaurant.contact = [obj objectForKey:@"contact"]; 
     restaurant.location = [obj objectForKey:@"location"]; 
     [self.parsedRestaurantArray addObject:restaurant]; 

    }]; 

Это класс ресторана:

@interface Restaurant : NSObject 

@property (nonatomic, strong)NSString *name; 
@property (nonatomic, strong)NSString *imageURL; 
@property (nonatomic, strong)NSString *category; 
@property (nonatomic, strong)Contact *contact; 
@property (nonatomic, strong)Location *location; 

@end 

Здесь след след:

Нагрузочного приложение из-за неперехваченное исключением 'NSUnknownKeyException', причина: «[valueForUndefinedKey]: этот класс не является ключевым значением, совместимым с кодировкой для ключевого backgroundImageURL. ' *** Первый стек бросить вызов: ( 0 CoreFoundation 0x000000010e631e65 exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010e0aadeb objc_exception_throw + 48 2 CoreFoundation 0x000000010e631aa9 - [NSException поднять] + 9 3 Фонд 0x000000010dd0a888 - [NSObject (NSKeyValueCoding) valueForUndefinedKey:] + 226 4 Фонд 0x000000010dc60997 - [NSObject (NSKeyValueCoding) valueForKey:] + 280 5 Фонд 0x000000010dc60758 - [NSArray (NSKeyValueCoding) valueForKey:] + 437 6 BottleRocketExercise 0x000000010cd8692a - [LunchesViewController CollectionView: cellForItemAtIndexPath:] + 282 7 UIKit 0x0000000 10f2335ba - [UICollectionView _createPreparedCellForItemAtIndexPath: withLayoutAttributes: applyAttributes: IsFocused:] + 483 8 UIKit 0x000000010f235ae0 - [UICollectionView _updateVisibleCellsNow:] + 4431 9 UIKit 0x000000010f23a23b - [UICollectionView layoutSubviews] + 247 10 UIKit 0x000000010ea954a3 - [UIView (CALayerDelegate) layoutSublayersOfLayer: ] + 703 11 QuartzCore 0x00000001129a759a - [CALayer layoutSublayers] + 146 12 QuartzCore 0x000000011299be70 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 13 QuartzCore 0x000000011299bcee _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 14 QuartzCore 0x0000000112990475 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 15 QuartzCore 0x00000001129bdc0a _ZN2CA11Transaction6commitEv + 486 16 QuartzCore 0x00000001129be37c _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92 17 CoreFoundation 0x000000010e55d367 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23 18 CoreFoundation 0x000000010e55d2d7 __CFRunLoopDoObservers + 391 19 CoreFoundation 0x000000010e552f2b __CFRunLoopRun + тысяча сто сорок-семь 20 CoreFoundation 0x000000010e552828 CFRunLoopRunSpecific + 488 21 GraphicsServices 0x000000011245cad2 GSEventRunModal + 161 22 UIKit 0x000000010e9de610 UIApplicationMain + 171 23 BottleRocketExercise 0x000000010cd85f5f main + 111 24 libdyld.dylib 0x00000001106f192d начать + 1 ) LibC++ abi.dylib: оканчивающиеся неперехваченного исключением типа NSException

+0

показать полный код и весь json – hariszaman

+0

Просьба показать полную трассировку стека из этого исключения (NSUnknownKeyException) – shpasta

+0

нам нужна дополнительная информация. Покажите свой ресторанный класс и полный json –

ответ

1

Я думаю, что проблема с вашим кодом является то, что у вас есть и множество ресторанов, а не только один ресторан , У вашего объекта нет ключей, потому что у него есть массивы ресторанов.Вы можете получить ключи от каждого ресторана.

+0

Jonas ваш ответ помог .. Спасибо .. – user1342592

Смежные вопросы