web-dev-qa-db-ja.com

Swift

Parseから取得したオブジェクトがあり、その列をDictionaryまたは他の何かに保存したいと思います(より良い場合)。

私はこのような辞書が欲しいです:["name" : "Mike", "lastname" : "vorisis", "id" : "advsas"]

以下は、結果を取得するために使用するコードです。

func queryEvents() {
    let query = PFQuery(className: "eventController")
    query.limit = 1000
    query.includeKey("idEvent")
    query.includeKey("eventType")
    query.includeKey("idEvent.idMagazi")
    query.findObjectsInBackgroundWithBlock { (objects, error)-> Void in
        if let objects = objects  {
            for object in objects {
                var post = object["idEvent"] as? PFObject
                var post2 = post!["idMagazi"]
                print("retrieved related post: \(post2["name"]!)")
            }
        }
    }
}
13
mike vorisis

私はついにそれをどのように行うことができるかを見つけました。

私はこのように私が欲しいもので構造体を使用します:

var userDictionary = [Int : Event]()
struct Event {
        var nameEvent: String
        var nameMagazi: String


    }

そして、私はこれを使用します:

  if let objects = objects  {
                for object in objects {

                    let post = object["idEvent"] as? PFObject
                    let post2 = post!["idMagazi"] as? PFObject

                    let nameEvent = post!["name"] as! String
                    let idEvent = post?.objectId
                    let nameMagazi = post2!["name"] as! String

                     self.events[self.i] = Event(nameEvent: nameEvent , nameMagazi: nameMagazi)

                    self.i += 1
                }
                print(self.events[1]!.nameEvent)
            }

回答ありがとうございます!

4
mike vorisis

他の何か(それが良い場合)はカスタムクラスです。 idMagaziのタイプを実際のタイプに変更します。

class Event {

  let post : PFObject
  let name : String
  let idMagazi : String

  init(object : PFObject) {
    self.post = object
    self.name = object["name"] as! String
    self.idMagazi = object["idMagazi"] as! String

  }
}

そしてそれを使用する

 ...
 if let objects = objects as? [PFObject]  {
    var events = [Event]()
    for object in objects {

      let post = Event(object: object)
      events.append(post)
      print("retrieved related post: \(post.name)")
    }
 }
 ...
5
vadian

In Swift Dictionary<T,V>[T: V]と同等です。明示的に宣言されていない場合はタイプが推測されます。

空の辞書の作成(すべて同等):

var dict1: Dictionary<String, String> = [:]
var dict2: [String: String] = [:]
var dict3 = Dictionary<String, String>()
var dict4 = [String: String]()

値のある辞書(すべて同等):

var dict5 = ["Foo": "Bar", "Foo1": "Bar1", "Foo2": "Bar2"]
var dict6: Dictionary<String, String> = ["Foo": "Bar", "Foo1": "Bar1", "Foo2": "Bar2"]
var dict7: [String: String] = ["Foo": "Bar", "Foo1": "Bar1", "Foo2": "Bar2"]

既存の辞書に値を追加します。

dict["Foo"] = "Bar"

特定のシナリオでは、これを使用できます。

let dict = ["name" : name, "lastname" : lastname , "id" : id]

ここで、namelastname、およびidString変数です。


あなた自身の答え に基づいて更新します:

この構造体を持つ:

struct Event {
    var nameEvent: String
    var nameMagazi: String
}

このアプローチを使用すると、外部インデックスを使用せずに、辞書の代わりに配列を使用して結果を格納できます。

var events: [Event]?

guard let objects = objects else { return }
events = objects.map { object in
    let post = object["idEvent"] as? PFObject
    let post2 = post!["idMagazi"] as? PFObject

    let nameEvent = post!["name"] as! String
    let idEvent = post?.objectId
    let nameMagazi = post2!["name"] as! String

    return Event(nameEvent: nameEvent , nameMagazi: nameMagazi)
}
3
redent84

次のような辞書を作成します。

var dict = ["name" : "Mike", "lastname" : "vorisis" , "id" : "advsas"]

OR

var dict = Dictionary<String,String>
dict.setValue("Mike", forKey: "name")
2
iAnurag

次の行を使用して辞書を作成できます。

var dictionaryArray: [Dictionary<String,String,Int>] = []

次に、値を辞書に追加することで値を追加できます。

dictionaryArray.append(["name" : "Mike", "lastname" : "vorisis" , "id" : "advsas"])

お役に立てれば。

0
onemillion