0

サーバーからユーザー オブジェクトを取得しています。リクエストが成功すると、次のようになります。

{ user = {
        User = { id = 1; }
} }

失敗すると、次のようになります。

{ user = false; }

成功した場合にうまく機能するマッピングがあります:[mappingProvider setMapping:userMapping forKeyPath:@"user.User"];

しかし、失敗した場合、次の例外が発生します。マッピングでキーパスの関係として'NSUnknownKeyException', reason: '[<__NSCFBoolean 0x1c58f78> valueForUndefinedKey:]: this class is not key value coding-compliant for the key User.'設定して、キーパスからを生成しようとしましたが、そこにも喜びはありませんでした。userMappingUserNSDictionaryuser

これに対処する正しい方法は何ですか?キーパスには2つの異なるマッピングが必要なようでuser、オブジェクトをNSBooleanにデコードするかどうかに基づいてどちらを選択するか...

4

2 に答える 2

0

サーバーはおそらく (そしてうまくいけば) 400 などの http エラー コードを返します。おそらく、Restkit はエラー マッピングを使用して応答をマッピングしようとしています。

おそらく、@Paulが言うように、動的オブジェクトマッピングが必要ですが、エラーマッピングに適用されます。私が話していることを理解できるように、ここに簡単なエラーマッピングを残します。

RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]];
[errorMapping mapKeyPath:@"msg" toAttribute:@"errorMessage"];
[[[RKObjectManager sharedManager] mappingProvider] setErrorMapping:errorMapping];
于 2012-08-24T16:24:25.980 に答える
0

私はお勧めしRKDynamicObjectMappingます。次の 2 つのフレーバーのいずれかが機能するはずです。

- (void)setObjectMapping:(RKObjectMapping *)objectMapping whenValueOfKeyPath:(NSString *)keyPath isEqualTo:(id)value;

また

+ (RKDynamicObjectMapping *)dynamicMappingUsingBlock:(void(^)(RKDynamicObjectMapping *dynamicMapping))block;
于 2012-08-06T06:33:22.100 に答える