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"]!)")
}
}
}
}
私はついにそれをどのように行うことができるかを見つけました。
私はこのように私が欲しいもので構造体を使用します:
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)
}
回答ありがとうございます!
他の何か(それが良い場合)はカスタムクラスです。 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)")
}
}
...
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]
ここで、name
、lastname
、およびid
はString
変数です。
この構造体を持つ:
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)
}
次のような辞書を作成します。
var dict = ["name" : "Mike", "lastname" : "vorisis" , "id" : "advsas"]
OR
var dict = Dictionary<String,String>
dict.setValue("Mike", forKey: "name")
次の行を使用して辞書を作成できます。
var dictionaryArray: [Dictionary<String,String,Int>] = []
次に、値を辞書に追加することで値を追加できます。
dictionaryArray.append(["name" : "Mike", "lastname" : "vorisis" , "id" : "advsas"])
お役に立てれば。