1

AFNetworking を使用してアプリケーションの開発を開始しました。コアデータを使用するまで、すべて問題ありませんでした。そのための追加のクラス (AFIncrementalStore) があることは知っています。しかし、私はIOS開発に慣れていないため、それに関する情報はあまりありません。ここにもっと多くの情報があるので、RestKitに切り替えることにしました。ここで、AFNetworking に関するチュートリアルに従いました。ここで、このメソッドを含む API クラスを作成しました。

+(API *)sharedInstance
{
    static API *sharedInstance = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^ {
        sharedInstance = [[self alloc]initWithBaseURL:[NSURL URLWithString:kAPIHost]];
    });
    return sharedInstance;
}

#pragma mark - init
//intialize the API class with the destination host name

-(API *)init
{
    //call super init
    self = [super init];

    if (self != nil){
        //initialize the object
        user = nil;

        [self registerHTTPOperationClass:[AFJSONRequestOperation class]];

        // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
        [self setDefaultHeader:@"Accept" value:@"application/json"];
    }
    return self;
}

-(void)loginCommand:(NSMutableDictionary *)params onCompletion:(JSONResponseBlock)completionBlock{
    NSLog(@"%@%@",kAPIHost,kAPILogin);
    NSMutableURLRequest *apiRequest = [self multipartFormRequestWithMethod:@"POST" path:kAPILogin parameters:params constructingBodyWithBlock:^(id <AFMultipartFormData>formData){
        //TODO: attach file if needed

    }];
    AFJSONRequestOperation *operation = [[AFJSONRequestOperation alloc] initWithRequest:apiRequest];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
        //success!
        NSLog(@"SUCCESSSS!");
        completionBlock(responseObject);
    }failure:^(AFHTTPRequestOperation *operation, NSError *error){
        //Failure
        NSLog(@"FAILUREE!");
        completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
    }];
    [operation start];

}

これは、私の Web サービスとアプリケーションの間の通信を処理します。viewControler 自体では、このメソッドを次のように呼び出します。

   /*  [[API sharedInstance] loginCommand:[NSMutableDictionary dictionaryWithObjectsAndKeys:_txtLogin.text,@"email",_txtPass.text,@"pwd", nil] onCompletion:^(NSDictionary *json){
     //completion
         if(![json objectForKey:@"error"]){
             NSLog(@"status %@",[json valueForKeyPath:@"data.status"]);
             if([[json valueForKeyPath:@"data.status"]intValue] == 200){
                  // Everything is oké, and login is succesfull
             }else{
                 //show validation
             }
         }else {
             NSLog(@"Cannot connect to the server");
         }
     }];*/

これは、AFnetworking でこれを行う方法です。しかし、RestKit でこれを行う場合の違いは何ですか。チュートリアルを検索しました。しかし、RestKit 1.0 から 2.0 への更新後、これらのチュートリアルの多くは古くなっています。だから、誰かがこれで私を助けてくれることを願っています!

敬具!

4

1 に答える 1