0

リクエストで文字列の配列を作成する方法はありますか? 応答の解決策をいくつか見つけましたが、それらのほとんどは restkit 0.10.x であるか、理解できませんでした。(たとえば、RestKit での ID の配列による関係のマッピングは機能しません)

これが私の設定です。コア データとマネージド オブジェクトで iOS 6 を使用しています。私のリクエストは次のようになります

{
 "attribute":["some text", "some more text", "and one more text"],
 "relationship":[some object data],
 "string":"some text"
}

エンティティは「doRequest」と呼ばれます。「関係」は他の管理対象との関係、「文字列」は属性です。属性として「attribute」を持ちたいのですが、「attribute」を文字列の配列に設定する方法がありません。したがって、「属性」は、属性「テキスト」を持つエンティティ「サブ属性」との 1 対多の関係です。

私の残りのキットのマッピング: RKObjectMapping *subAttributeMapping = [RKObjectMapping requestMapping]; [subAttributeMapping addAttributeMappingsFromArray:@[@"text"]];

RKObjectMapping *doRequestMapping = [RKObjectMapping requestMapping];
[doRequestMapping addAttributeMappingsFromDictionary:@{
 @"string": @"string"}];

[doRequestMapping addRelationshipMappingWithSourceKeyPath:@"attribute" mapping:subAttributeMapping];
[doRequestMapping addRelationshipMappingWithSourceKeyPath:@"relationship" mapping:relationshipMapping];

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:doRequestMapping objectClass:[DoRequest class] rootKeyPath:nil];

[objectManager addRequestDescriptor:requestDescriptor];

Restkit マップは次のようになります。

{
 "attribute":[{"text":"some text"}, {"text":"some more text"}, {"text":"and one more text"}],
 "relationship":[some object data],
 "string":"some text"
}

しかし、それは私が必要とするものではありません。手伝っていただけませんか?

4

1 に答える 1

1

ということで、コアデータを使わずにオブジェクトだけで直しました。NSArray *attributeArrayオブジェクトに、文字列の配列を作成するための restkit letの新しい属性が追加されました。

私の DoRequest.h:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@interface DoRequest : NSManagedObject

@property (nonatomic, retain) NSString * string;
@property (nonatomic, retain) NSSet * relationship;
@property (nonatomic, retain) NSSet *attribute;
@property (nonatomic, retain) NSArray *attributeArray;
@end

@interface DoRequest (CoreDataGeneratedAccessors)

- (void)addRelationshipObject:(RelationshipReference *)value;
- (void)removeRelationshipObject:(RelationshipReference *)value;
- (void)addRelationship:(NSSet *)values;
- (void)removeRelationship:(NSSet *)values;

- (void)addAttributeObject:(NSManagedObject *)value;
- (void)removeAttributeObject:(NSManagedObject *)value;
- (void)addAttribute:(NSSet *)values;
- (void)removeAttribute:(NSSet *)values;

@end

私の DoRequest.m:

#import "DoRequest.h"
#import "RelationshipReference.h"
#import "Attribute.h"

@implementation DoRequest

@dynamic string;
@dynamic relationship;
@dynamic attribute;
@dynamic attributeArray;

- (NSArray *)attributeArray
{
    NSMutableArray *array = [[NSMutableArray alloc] init];

    for (Attribute.h *object in self.attribute) {
        [array addObject:object.attributeName];
    }

    return [array copy];
}

@end

私のオブジェクトマッパーは次のようになります:

RKObjectMapping *doRequestMapping = [RKObjectMapping requestMapping];
[doRequestMapping addAttributeMappingsFromDictionary:@{
 @"string": @"string",
 @"attributeArray": @"attribute"}];

[doRequestMapping addRelationshipMappingWithSourceKeyPath:@"relationship" mapping:[self relationshipReferenceObjectMapping]];

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:doRequestMapping objectClass:[DoQueryRequest class] rootKeyPath:nil];

[objectManager addRequestDescriptor:requestDescriptor];
于 2013-03-22T08:14:48.747 に答える