2012-11-12 167 views
2

我正在使用開發分支來避免隨着新版本的推出而開始。不幸的是,我無法弄清楚如何做基礎(我是RestKit的新手)。如何使用Restkit映射

我想要完成的基本步驟是先用2個參數調用「/ auth/login /」並返回一個json文檔。任何幫助將不勝感激!

更新1:我問錯了嗎?我錯過了什麼?人們只是沒有使用Restkit的項目?

更新2:當我得到這個錯誤時我應該尋找什麼?我有一個類映射和路徑模式,但我真的沒有得到我應該做的。

Code=1001 "Unable to find any mappings for the given content" 

我剛剛發現在https://github.com/RestKit/RestKit/blob/development/README.md

更新3此更新的自述文件:我已經嘗試了各種方法做一個簡單的通話/響應/呼叫成功,但沒有。我可以在輸出中看到調用成功,但RestKit總是抱怨它無法映射內容。我真的不明白。生成的JSON主要是如下:

{ 
     "email" : "[email protected]", 
     "fullname" : "Full Name" 
} 

不管我怎麼努力,我不能讓RestKit明白這一點。幫幫我?任何人?

更新4:我將有效負載更改爲以下內容,並且更改了描述符語句,但結果沒有變化。調用成功,RestKit因錯誤1001失敗。它仍然說我的keyPath = null。我錯過了什麼?

{ 
    "whoami" : { 
     "email" : "[email protected]", 
     "fullname" : "Full Name" 
    } 
} 

[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:mymap 
               pathPattern:@"/auth/login/" 
                keyPath:@"whoami" 
               statusCodes:statusCodes]]; 
+0

你看在github上站點上的文檔? https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md。或者搜索一些例子? http://liebke.github.com/restkit-github-client-example/ – marvin

+2

大多數示例都使用不再存在的方法,甚至有些類不再存在,例如RKClient。我一直在尋找一段時間,試圖超越學習曲線。詳細的例子似乎顯示了一種工作方式,但只有服務器完全按照RestKit希望服務器工作的方式工作。做別的事情似乎很難,主要是因爲它不知道該怎麼做。是的,我真的很困惑:) – darren

+0

你引用的第二個例子我可以使大部分工作,除了調用「RKObjectMapper * mapper = objectManager.mapper」不再存在。 – darren

回答

1

也許這可以help..the請求可能是這樣的:

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 
[params setObject:email forKey:@"email"]; 
[params setObject:fullname forKey:@"fullname"]; 


NSMutableURLRequest *rq = [manager requestWithObject:[User new] method:RKRequestMethodPOST path:@"http://url" parameters:params]; 

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[User mapping] pathPattern:nil keyPath:nil statusCodes:nil]; 

RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:rq responseDescriptors:@[responseDescriptor]]; 

[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) { 

    //success 

} failure:^(RKObjectRequestOperation *operation, NSError *error) { 

    //error 

}]; 
[operation start]; 

和映射:

+ (RKObjectMapping *)mapping 
{ 
    RKObjectMapping *requestMapping = [RKObjectMapping mappingForClass:[self class]]; 
    [requestMapping addAttributeMappingsFromDictionary:@{ 
    @"ContactDetail":  @"contactDetail", 
    @"IdUser":   @"idUser", 
    @"Name":    @"name", 
    @"Address":   @"address", 
    @"UserSettings":  @"userSettings" 
    }]; 

    // if the obj have relationship 
    RKRelationshipMapping *rl = [RKRelationshipMapping relationshipMappingFromKeyPath:@"someKey" toKeyPath:@"toKey" withMapping:[Obj mapping]]; 
    [requestMapping addPropertyMappingsFromArray:@[rl]]; 

    return requestMapping; 
}