2015-08-13 36 views
2

更新,我添加IReturn我GetMember類這樣如何從swift調用基於servicestack的web api?

[Route("/member")] 
[Route("/member/{member_id}")] 
public class GetMember:IReturn<CommonResponse> 
{ 
    public int member_id { get; set; } 
} 

後,我現在可以成功建立我的SWIFT代碼。但是,答覆似乎缺少一些關鍵性質。

CommonResponse被定義爲這樣

public class CommonResponse 
{ 
    public int recordcount { get; set; } 
    public object data { get; set; } 

} 

這是我的SWIFT代碼

var client = JsonServiceClient(baseUrl: "http://localhost/api/") 
let response:CommonResponse = client.get(req, error: &error)! 
println(response.toJson()) 

什麼,我所得到的是這種

{"recordcount":1} 

缺少非常重要的特性:數據

請再次幫助,謝謝!

下面已定通過添加IReturn到我的DTO GetMember類

我一直在讀書,並努力從迅速調用基於servicestack API。基本上我讀過這篇文章https://github.com/ServiceStack/ServiceStack/wiki/Swift-Add-ServiceStack-Reference

我已經成功地從我的API

迅速生成的代碼但是,當我寫這在我的iOS迅速的項目

let req = GetMember() 
req.member_id = 3 
var error : NSError? 
var client = JsonServiceClient(baseUrl: "http://localhost/api/") 
let response = client.get(req, error: &error) 

我不能成功建立它。錯誤最後一行:不能與類型的參數列表調用「得到」「(GetMember,錯誤:INOUT NSError)」

請幫我

回答

1

是否GetMember請求DTO定義了上IReturn<T>接口它?如果不是,你需要在呼叫站點指定它,即:

var response:GetMemberResponse = client.get(GetMember()) 
+0

好的,謝謝,它解決了我的問題。但新的來了。我有這個。公共類GetMember:IReturn CommonResponse是我的一個類。它有2個屬性。 RecordCount作爲Int和Data作爲對象。現在我在swift中返回的響應只有recordcount但缺少Data。 – shawhu

+0

@shawhu請參閱[Swift限制](https://github.com/ServiceStack/ServiceStack/wiki/Swift-Add-ServiceStack-Reference#swift-native-types-limitations),不要創建'object'或'接口「屬性。 – mythz

+0

感謝您的回覆@mythz。我明白了。我完全理解使用接口對於DTO來說不是一個好主意,但僅僅爲了這種情況,我需要返回一個標準返回格式(CommonResponse),而且碰巧必須實現一個可以返回一般類型的屬性(作爲對象)。你有什麼建議?什麼是正確的方法來做到這一點?或者你是否認爲這不是一種正確的方法,因爲CommonResponse的想法不是一種好的做法,所以我應該爲每個請求DTO定義單獨的返回響應? – shawhu

相關問題