0

私が現在理解しているように、それを行う1つの方法はJSONを使用することです。しかし、Swift オブジェクトをサーバーに送信して、サーバーで同じクラスが利用可能であることを確認する方が、より適切で簡単に思えます。このようにして、すべてのステップで迅速に使用し続けることができます。

これは可能ですか、どうすればこれを行うことができますか?

現在のセットアップ:

  1. データを送信する Swift プレイグラウンド。
  2. データを受信する Kitura サーバー。

遊び場コード:

import UIKit
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

struct TestObject {
    let foo = "just a string"
    let number = 125
    let array = ["bar", "foo"]

    func printSomeInfo() {
        print(foo + "\(number+25)")
    }
}

func send() {
    let request = NSMutableURLRequest(url: URL(string: "http://192.168.178.80:8090/test")!)
    request.httpMethod = "POST"

    let testObject = TestObject()

    let bodyData = "\(testObject)"
    request.httpBody = bodyData.data(using: String.Encoding.utf8)

    let task =  URLSession.shared.dataTask(with: request as URLRequest,
                                           completionHandler: {
                                            (data, response, error) -> Void in

    })

    task.resume()
}

send()

Kitura main.swift コード:

import Kitura
import Foundation

let router = Router()

struct TestObject {
    let foo = "just a string"
    let number = 125
    let array = ["bar", "foo"]

    func printSomeInfo() {
        print(foo + "\(number+25)")
    }
}

router.post("/test") {request, response, next in
    response.headers["Content-Type"] = "text/plain; charset=utf-8"

    if let post = try request.readString() {
        // would like to cast to TestObject but that doesn't work
        // let postObject = post as TestObject
        print(post)
    }
}

Kitura.addHTTPServer(onPort: 8090, with: router)
Kitura.run()
4

2 に答える 2

0

あなたの状況では、JSON オブジェクト マッピング用の優れたライブラリがあります。 https://github.com/Hearst-DD/ObjectMapper ただし、マッピングする機能を実装するには、クラスと構造に追加のコードが必要になります。

于 2016-10-29T12:58:11.257 に答える