I have a code that uses self
inside a background thread. It worked perfectly well until I migrated it to Swift 3, since then I get an error message every time I use self
that goes like this: "Closure cannot implicitly capture a mutating self parameter".
My code goes like this:
mutating func fetchData() {
DispatchQueue.global(qos: .background).async {
for className in self.classNames {
let query = PFQuery(className: className)
query.limit = 1000
do {
for obj in try query.findObjects() {
let typeObj = TypeObj(parseObject: obj, typeName: className)
if className == “type1”{
self.type1s.append(store)
} else if className == “type2” {
self.type2s.append(store)
} else if className == “type3” {
self.type3s.append(store)
} else if className == “type4” {
self.type4s.append(store)
} else if className == “type5” {
self.type5s.append(store)
}
}
}
catch _ {
// Error handling
}
}
let dict = [
“Type1s”:self.type1s,”Type2s”:self.type2s,”Type3s”:self.type3s,”Type4s”:self.type4s,”Type5s”:self.type5s
]
self.delegate.getDictionary(dict)
}
}