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;
}
嗨,你可以評論我應該如何修復上面編輯的代碼?我覺得我還沒有提供適當的映射。 – 2014-09-30 17:50:53
你不需要動態映射。您的KVC驗證是否正在運行並拒絕不需要的項目?您尚未顯示該ID的驗證。 – Wain 2014-09-30 18:37:42
謝謝!我的代碼越來越大,所以我忘了這段代碼偶然映射的屬性映射。再次感謝! – 2014-09-30 18:56:32