У меня есть кнопка для сохранения данных изображения в основных данных, но когда я нажимаю ее, она замерзает, потому что размер данных большой. Я попытался использовать dispatch_async, но это не сработало. Как создать значок/индикатор, показывающий, что он загружается/закладок, а не просто замерзает?Показать индикатор при сохранении данных ядра Swift
@IBAction func save() {
let content = self.foodMenu?["content"].string
let urlString = self.foodMenu?["thumbnail_images"]["full"]["url"]
let urlshare = NSURL(string: urlString!.stringValue)
let imageData = NSData(contentsOfURL: urlshare!)
let images = UIImage(data: imageData!)
dispatch_async(dispatch_get_main_queue(), {
if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext {
self.foodClass = NSEntityDescription.insertNewObjectForEntityForName("Foods",
inManagedObjectContext: managedObjectContext) as! Foods
self.foodClass.content = content
self.foodClass.image = UIImageJPEGRepresentation(images, 1)
var e: NSError?
if managedObjectContext.save(&e) != true {
println("insert error: \(e!.localizedDescription)")
return
}
}
Причина, по которой приложение по-прежнему зависает при попытке отправить его в отдельный поток, связано с тем, что вы помещаете его в основной поток. Вы действительно должны это делать, чтобы отправить его в отдельный поток, чтобы приложение не зависало. dispatch_async (dispatch_get_global_queue (int (QOS_CLASS_USER_INITIATED.value), 0)) – Aaron
Чтобы показать индикатор активности, вам нужно поместить его в свое представление, создать IBOultet и когда вы хотите, чтобы он отображался только для вызова activityIndicator.startAnimating() для анимации и ActivityIndicator .stopAnimating(), чтобы остановить его. – Brduca
Спасибо, ребята. – user2952122