에서 결과 가져 오기 처음 : 저는 CloudKit과 "dispatch"-mchanisms에서 정말 새로운 것 같습니다.cloudkit-query
하지만 배열로 쿼리 결과를 반환하는 swift 함수를 작성하고 싶습니다. 이제 내 문제는 함수가 쿼리가 끝날 때까지 기다리지 않고 빈 배열을 받는다는 것입니다. 내 DB에는 레코드가 있지만 제대로 다시 가져 오지 않습니다.
그래서 전체 dispatch_async 메커니즘 등을 이해하지 못했습니다. 또한 CloudKit에 대한 raywenderlich.com의 튜토리얼을 읽었지 만 여전히 배열을 올바르게 반환 할 수는 없습니다.
이것은 실제 코드입니다. 나는 종종 사람들이 dispatch_async
-methods를 사용하는 것을 보았지만 실제로 어떻게 배열을 반환 할 수 있는지 이해하지 못합니다.
func loadMyShopsCoolAwesome() ->[Shops]{
let container = CKContainer.defaultContainer()
var publicDB = container.publicCloudDatabase
let myQuery = CKQuery(recordType: "Shops", predicate: NSPredicate(value: true))
var myShops = [MyShops]()
publicDB.performQuery(myQuery, inZoneWithID: nil) {
results, error in
if error != nil {
println(error)
} else {
for record in results{
let shop = MyShops(nameElementAt: record.objectForKey("nameElementAt") as Int, nameElementFromSplit: record.objectForKey("nameElementFromSplit") as Int, nameSplitString: record.objectForKey("nameSplitString"), priceElementAt: record.objectForKey("priceElementAt") as Int, priceSplitString: record.objectForKey("priceSplitString"), shopName: record.objectForKey("shopName"), shopURL: record.objectForKey("shopURL"), xPathName: record.objectForKey("xPathName"), xPathPrice: record.objectForKey("xPathPrice"))
myShops.append(shop)
}
return myShops
}
}
}
어떻게 메인 대기열에서 호출 할 수 있습니까? – Christian
나는 대답을 –
에 추가했습니다 : dispatch_async (dispatch_get_main_queue()? 또한 그 mainQueue- 블록 안에 processShops를 넣어야합니까? – Christian