Я только начинаю изучать Objective-C, и мне нужна помощь с этим классом обслуживания, который я хочу написать.
Я хочу создать класс APIService, который использует ресткит и возвращает ответы.
Похоже, что ресткит основан на блоках, поэтому, когда вызов http возвращается, анализирует json и возвращает результирующую коллекцию, мне нужно каким-то образом заставить мои методы APIService возвращать ответ.
Я ищу помощь по скелетной структуре этого сервиса, так как я новичок в Objective-C и Restkit (который использует блоки).
Я смотрю на этот пример, который я хочу настроить в своем собственном классе APIService:
- (void)loadTimeline
{
// Load the object model via RestKit
RKObjectManager *objectManager = [RKObjectManager sharedManager];
[objectManager getObjectsAtPath:@"/status/user_timeline/RestKit"
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSArray* statuses = [mappingResult array];
NSLog(@"Loaded statuses: %@", statuses);
_statuses = statuses;
if(self.isViewLoaded)
[_tableView reloadData];
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
NSLog(@"Hit error: %@", error);
}];
}
Может ли кто-нибудь помочь мне конкретизировать эту скелетную структуру с вызовом метода, подобным временной шкале, вот что у меня есть сейчас:
@interface MyApiService : NSObject
{
@property (nonatomic, strong, readwrite) RKObjectManager *rkObjectManager;
- (id)initWithRKObjectManager:(RKObjectManager *)rkObjectManager;
- (NSArray) loadTimeline:
}
@implementation MyApiService
{
- (id)initWithRKObjectManager:(RKObjectManager *)rkObjectManager
{
self = [super init];
if(self) {
self.rkObjectManager = rkObjectManager;
// ...
}
}
// how to define method for loadTimelines when the call returns using a block?
}
Тогда я буду использовать это так:
// Initialize RestKit
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
MyAPiService *service = [[MyApiService alloc] initWithRKObjectManager: objectManager];
NSArray *statuses = [service loadTimeLine];
Но не уверен, что именно так я буду вызывать loadTimeLine, поскольку ресткит снова использует блоки??