benim app bir ActivityIndicatorView görüntülemek istediğiniz, ama ana akıştan sync
yöntemi, hata ile uygulama çöker çağırdığınızda: Ben xcode 8.0 kullanıyorum exc_bad_instruction (code=exc_i386_invop subcode=0x0)
ve hızlı 3DispatchQueue.main.sync dönen exc_bad_instruction Swift 3
Birisi bana yardım edebilir mi? Burada yapmaya çalıştığımız şey
func POST(endpoint:NSString!,body:NSString!,vc:UIViewController? = nil)->NetworkResult{
let result = NetworkResult()
DispatchQueue.main.sync {
self.displayActivityIndicator(viewController: vc)
}
let urlStr = self.url.appending(endpoint as String).appending(self.getHashAutenticacao() as String)
print(urlStr)
let request = NSMutableURLRequest(url: URL(string: urlStr)!, cachePolicy: NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData, timeoutInterval: 20)
print(request.debugDescription)
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = body.data(using: String.Encoding.utf8.rawValue, allowLossyConversion: true)
// send the request
var data: NSData!
do {
data = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: &self.response) as NSData!
} catch let error1 as NSError {
self.error = error1
data = nil
}
if let httpResponse = self.response as? HTTPURLResponse {
result.resultCode = httpResponse.statusCode
if httpResponse.statusCode == 200{
if data != nil{
if data.length > 0{
let json = (try! JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.mutableContainers))
if let jsonArray:NSArray = json as? NSArray{
result.data = jsonArray
}else{
if let jsonDict:NSDictionary = json as? NSDictionary{
result.data = [jsonDict]
}
}
}
}
}
}else {
result.message = self.error!.debugDescription as NSString?
}
DispatchQueue.main.sync {
self.hideActivityIndicator(viewController: vc)
}
return result
}
nedir '-displayActivityIndicator (_ :) yöntemi' yapıyor? – holex
** Verileri bir sunucuya eşzamanlı olarak yüklemeyin, kötü kullanıcı deneyimine neden olur. Eşzamansız desene alışın. – vadian
Ben de bunu fark ettim, ana ya da ikincil ipekten dönebilecek bir metodum var (muhtemelen bu iyi bir fikir değil ama benim durumum için anlam ifade ediyor). Yeni bir şey düşünüyorum çünkü ana iş parçacığı ana iş parçacığını şu ana kadar göndermekten asla endişelenmem. –