1

これを行うためのより短い方法はありますか?

私はいくつかの述語ですべてのコアデータオブジェクトを取得し、RestKit と定義されたマッピングを使用してそれらを JSON に解析しています... まだ RestKit を使用したいのですが、もっと簡単にできませんか?

- (NSArray *)serializedManagedObjectClass:(Class)managedObjectClass updatedSinceRevision:(long long)revision {

    NSArray * managedObjects = [managedObjectClass MR_findAllSortedBy:@"createdDate" ascending:YES withPredicate:[NSPredicate predicateWithFormat:@"revision > %lld", revision]];

    NSError * error = nil;

    NSMutableArray * serializedObjects = [[NSMutableArray alloc] initWithCapacity:[managedObjects count]];

    for (NSManagedObject * managedObject in managedObjects) {

        id object = [NSMutableDictionary new];

        RKObjectMappingOperation * op = [RKObjectMappingOperation mappingOperationFromObject:managedObject toObject:object withMapping:[self.objectManager.mappingProvider serializationMappingForClass:managedObjectClass]];
        BOOL success = [op performMapping:&error];

        if ((success) && (error == nil) && (object)) {
            [serializedObjects addObject:object];
        } else {
            ALog(@"Serialization problem with %@, possible error %@", managedObject, error);
        }

    }

    return serializedObjects;
}
4

1 に答える 1

0

各オブジェクトを個別にマップする必要はありません。そのクラスのシリアル化マッピングを設定している限り、そのオブジェクトのインスタンスを送信しようとすると、RestKit がシリアル化を処理します。クラスのマッピングを既に作成して割り当てているようです。

ここで、管理対象オブジェクトの配列を、サーバーに送信されるパラメーターの辞書に追加するだけです。次に、RestKit は、提供されたマッピングに従って各オブジェクトをマッピングする必要があります。

于 2012-11-20T16:07:12.657 に答える