2014-09-25 40 views
0

匹配JSON我有此JSON(字典的陣列):使用RestKit使用KVC驗證

[ 
    {"id":"BTCLTC","last":"89.767","high":"96.185","low":"25.000","bid":"89.729","ask":"91.320","volume":"29.78918","scale":3}, 
    {"id":"BTCUSD","last":"443.799","high":"444.092","low":"394.570","bid":"439.110","ask":"446.760","volume":"4.68266","scale":3}, 
    {"id":"BTCXRP","last":"98101.500","high":"98101.500","low":"86000.000","bid":"94999.050","ask":"97499.900","volume":"21.66779","scale":3} 
] 

我想用一個RKObjectMappingMatcher來匹配"id":"BTCUSD"例如。

編輯:

得益於以下北斗星的評論,使用RKObjectMapping,就足以讓KVC驗證工作。驗證方法由RestKit自動調用。

我的代碼到目前爲止看起來像:

RKObjectMapping *defaultMapping = [RKObjectMapping mappingForClass:class]; 

NSDictionary *attributeMappings = [query objectForKey:@"attributeMappings"]; 
[defaultMapping addAttributeMappingsFromDictionary:attributeMappings]; 

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:dynamicMapping method:RKRequestMethodFromString(@"GET") pathPattern:@"/api/v1/markets" keyPath:@"" statusCodes:[NSIndexSet indexSetWithIndex:RKStatusCodeClassSuccessful]]; 
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:url]; 
[manager addResponseDescriptor:responseDescriptor]; 

我已經添加了什麼,我認爲是必要的驗證爲NSObject

- (BOOL)validateCurrencyConversionID:(id *)ioValue error:(NSError **)outError 
{ 
    if ([(NSString*)*ioValue length] == 0) 
    { 
     *outError = [NSError errorWithDomain:RKErrorDomain code:100 userInfo:@{@"description":@"Empty string"}]; 
     return NO; 
    } 
    else if ([((NSString*)*ioValue) rangeOfString:@"USD"].location == NSNotFound) 
    { 
     *outError = [NSError errorWithDomain:RKErrorDomain code:101 userInfo:@{@"description":@"Doesn't contain USD"}]; 
     return NO; 
    } 
    return YES; 
} 

回答

0

不要使用這種方法,因爲你不能適當地索引到數組中,因此你正在處理一個你期望得到一個字符串的數組。

取而代之,允許映射爲每個映射運行,然後使用KVC validation中止您不想要的項目的映射。

+0

嗨,你可以評論我應該如何修復上面編輯的代碼?我覺得我還沒有提供適當的映射。 – 2014-09-30 17:50:53

+0

你不需要動態映射。您的KVC驗證是否正在運行並拒絕不需要的項目?您尚未顯示該ID的驗證。 – Wain 2014-09-30 18:37:42

+0

謝謝!我的代碼越來越大,所以我忘了這段代碼偶然映射的屬性映射。再次感謝! – 2014-09-30 18:56:32