3

私は iOS 開発と Swift の初心者です (ご容赦ください)。次のように定義されたクラスオブジェクトがあります。

class LocationPoint {
    var x: Double
    var y: Double
    var orientation: Double

    init(x: Double, y: Double, orientation: Double) {
        self.x = x
        self.y = y
        self.orientation = orientation
    }
}

私のデリゲートでは、クラスのインスタンスを作成し、それを配列に追加します (デリゲートの外部で宣言されています)。

var pt = LocationPoint(x: position.x, y: position.y, orientation: position.orientation)
self.LocationPoints.append(pt)

ここまでは順調ですね。ビューコントローラーのテキストビューオブジェクトに配列値を表示できますが、更新するたびに値が確実に追加されます。

今、私がやりたいのは、配列カウントが制限 (たとえば 100 個の値) に達した後、それを JSON オブジェクトとしてパッケージ化し、HTTP リクエストを使用して Web サーバーに送信することです。私の最初の考えは、SwiftyJSONAlamofireを使用してこれを支援することでした...しかし、問題をより小さな部分に分解しようとすると、次のことが必要になります。

  1. LocationPoints の配列から JSON オブジェクトを作成する
  2. JSON パケットを Web サーバーに送信するための HTTP 要求を作成する

現在、ステップ 1 を解決しようとしていますが、開始できないようです。CocoaPods を使用して両方のポッド (SwiftyJSON と Alamofire) をインストールしましたが、viewcontroller.swift ファイルでそれらを実際に使用する方法がわかりません。カスタム クラス構造から JSON オブジェクトを作成する方法について、誰かがガイダンスを提供できますか?

4

2 に答える 2

7

ここ[NSJSONSerialization]でクラスを確認する必要があります。

class LocationPoint {
    var x: Double
    var y: Double
    var orientation: Double

    init(x: Double, y: Double, orientation: Double) {
        self.x = x
        self.y = y
        self.orientation = orientation
    }
}

func locationPointToDictionary(locationPoint: LocationPoint) -> [String: NSNumber] {
    return [
        "x": NSNumber(double: locationPoint.x),
        "y": NSNumber(double: locationPoint.y),
        "orientation": NSNumber(double: locationPoint.orientation)
    ]
}

var locationPoint = LocationPoint(x: 0.0, y: 0.0, orientation: 1.0)
var dictPoint = locationPointToDictionary(locationPoint)

if NSJSONSerialization.isValidJSONObject(dictPoint) {
    print("dictPoint is valid JSON")

    // Do your Alamofire requests

}
于 2015-01-28T21:49:13.707 に答える