Parse Data是一个PFObject
类,包含"公司"我查询的数据。获取数据并将其指定为ParseData
对象可以正常工作,但问题是将其放入我的list
ivar。从输出中可以看出,匿名块中没有任何ivars发生变化。是否有针对此的解决方法或解决方案?
import Foundation
class AllCompanies: NSObject {
var list:[ParseData] = []
var testList:[String] = []
var testString:String = "butter"
override init()
{
super.init()
getCompanies()
}
func getCompanies()
{
let query = ParseData.query()!
query.findObjectsInBackgroundWithBlock { objects, error in
if error == nil
{
for company in objects!
{
let newCompany:ParseData = ParseData()
newCompany.name = company.objectForKey("Name") as! String
newCompany.logo = company.objectForKey("Logo") as! PFFile
self.list.append(newCompany)
self.testList.append("here")
self.testString = "no matter"
}
}
else
{
print("Error: \(error) \(error?.userInfo)")
}
}
}
}
方法调用:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Parse.setApplicationId("m0zIvk7nfP6nEUrGYzyecbhRdqTrhbUoBI00fvZ4", clientKey: "lmqPfyrkeq4p8v6cukV7aFCVdi4evb8MFyjgvnEG")
PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
let allCompanies = AllCompanies()
print("\(allCompanies.list)")
print("\(allCompanies.testList)")
print("\(allCompanies.testString)")
return true
}
答案 0 :(得分:2)
getCompanies
方法是异步的吗?确保是否在print
方法之前运行findObjectsInBackgroundWithBlock
命令。您不能将异步代码编写为同步代码。尝试在self.testString = "no matter"
下面写下你的打印代码。祝你好运!
答案 1 :(得分:0)
问题是因为查询是异步的。
您应该将打印行移动到查询回调闭包中。