كيف يمكنني جلب بسيط سلمان مجموعة من السلاسل باستخدام restkit

StackOverflow https://stackoverflow.com//questions/21002196

سؤال

سؤالي هو نسخة مكررة من

RestKit:كيفية جلب بسيط سلمان مجموعة من السلاسل ؟

ومع ذلك ، في حين أن المؤلف الأصلي العثور على إجابات مفيدة, أنا لا تزال مفقودة.هذا السؤال ملامح اثنين من منفصلة المراجع ، أي من الذي ذهبت بعيدا بما فيه الكفاية أن تساعدني (مبتدئا كاملة في KVC و RestKit).

مرجع واحد هو هنا ويعطي هذا المثال رمز

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Whatever class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"someAttribute"]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:@"/whatever" keyPath:nil statusCodes:nil];

ما هو مهما فئة من المفترض أن تكون ؟ يجب أن يكون NSString?أو هل هذا يعني أنني يجب أن إنشاء المجمع الفئة التي لديها خاصية واحدة وهي NSArray *?

وما هو @"someAttribute" من المفترض أن تكون ؟ مرة أخرى, هل هذا يعني التفاف الطبقة في هذه الحالة someAttribute أن يكون اسم مكان الإقامة على المجمع الدرجة التي NSArray *?

غيرها من الإشارة إلى هنا وعلى الرغم من أنه يظهر جلب من مجموعة في "المجمع فئة" المجمع فئة واحدة فقط NSNumber لا صفيف.لذلك ليس من الواضح كيفية تشغيل هذا المثال إلى أحد أن يعمل من أجل الحصول على مجموعة كاملة.

للإشارة الملقم إرجاع صفيف سلاسل تماما مثل الأصلي السؤال:["string1", "string2", "string3"].

التحديث

هنا هو رمز لقد حاولت.لقد خلق المجمع الدرجة.

@interface CannedResponse : NSObject

@property (strong, nonatomic) NSString * response;

@end

هنا هو رسم الخرائط:

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[CannedResponse class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"response"]];
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodGET pathPattern:RESPONSES_API_PATH keyPath:nil statusCodes:nil;

و أنا أتصل getObjectsAtPathForRouteName

ما أنا على الحصول على العودة هو مجموعة من CannedReponses كما هو متوقع.ومع ذلك بدلا من NSString التي وضعت في الاستجابة الملكية.أنا الحصول على RKMappingSourceObject.الآن RKMappingSourceObject لا بل تحتوي على السلسلة الصحيحة.

سأكون تبحث من خلال RestKit تسجيل الدخول في وحدة التحكم لمعرفة ما إذا كنت يمكن استخلاص بعض القرائن.

تحديث#2

كما ذكر هنا قبل blakewatters أنا لا أفعل أي رسم الخرائط في هذا المثال و يمكن تجاوز مجرد استخدام RestKit.المشكلة هي أن كل رمز أكتب في خدمة طبقة باستخدام RestKit و كنت عمياء التالية النمط على جميع المكالمات.لهذا ندعو الجواب الصحيح قد يكون لمعرفة كيفية الوصول AFNetworking مباشرة.

هل كانت مفيدة؟

المحلول

هنا هو إجابة أفضل استخدام آخر تعليق من blakewatters هنا

لا تستخدم RestKit على طلب مثل هذا.استخدام AFNetworking أن تفعل ذلك.و يمكنك الوصول إلى AFHTTPClient مثل هذا

[RKObjectManager sharedManager].HTTPClient

رمز فقط ثم يبدو شيئا من هذا القبيل

AFHTTPClient * client = [RKObjectManager sharedManager].HTTPClient;
[client getPath:YOUR_PATH
     parameters:nil
        success:^(AFHTTPRequestOperation *operation, id responseObject) {
            success([NSArray arrayWithArray:responseObject]);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            failure(operation.response.statusCode);
        }];

نصائح أخرى

اتضح أن الطريقة أنا أفعل ذلك في التحديث القسم لا يعمل.

على RKMappingSourceObject كان مضللا.وتنفذ NSProxy وبالتالي فإنه يتصرف مثل NSString كنت أتوقع.

أعتقد أن ما يجري وراء الكواليس:RestKit إنشاء RKMappingSourceObject الحالات كما هو تسلسل.عندما يدرك أن هذه الأشياء التي لدي هي الأوليات و لا خريطة أي شيء هو فقط يجعلهم في رسم وجوه, ولكن منذ ذلك تنفذ NSProxy فإنه يمكن إرسال أي طلبات الأساسية السلسلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top