Форум программистов, компьютерный форум, киберфорум
Наши страницы
Swift
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
ExFau$t
567 / 511 / 115
Регистрация: 08.05.2012
Сообщений: 2,544
17.08.2017, 12:47  [ТС] 0

Progress dialog

17.08.2017, 12:47. Просмотров 582. Ответов 5
Метки (Все метки)

Ответ

Самая трудоемкая операция - добавление в БД по конкретному региону/району/улице - адреса, здесь необходимо также добавлять связи. Улицы и адреса лежат вместе в одном json, поэтому, чтобы не дублировать улицы, я проверяю их наличие сначала. Весь код метода (код так себе, не будем об этом):

Добавлено через 1 минуту
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
        let context = CoreDataManager.instance.getContext()
        let token: String = defaults.string(forKey: "token")!
        //let concurrentQueue = DispatchQueue(label: "queuename", attributes: .concurrent)
        Alamofire.request(url+token).responseJSON{ response in
            if (response.error == nil){
                let jsonData: Data = response.data!
                do{
                    if let jsonResult = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String:AnyObject] {
                        if (jsonResult["Status"] as! Int==0){
                            let nomRegions = jsonResult["Regions"] as? [[String: Any]]
                            for i in stride(from: 0, to: (nomRegions?.count)!, by: 1){
                                let RegionName: String = (nomRegions![i]["RegionName"] as! NSString) as String
                                let regions = Regions(context: context)
                                var countDists:Int = 0
                                regions.name = RegionName
                                Alamofire.request(url+token+"&RegionId="+String((nomRegions![i]["Id"] as! NSNumber) as! Int)).responseJSON{ response in
                                    if (response.error == nil){
                                        let jsonData: Data = response.data!
                                        do{
                                            if let jsonResult = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String:AnyObject] {
                                                if (jsonResult["Status"] as! Int==0){
                                                    let nomDistrics = jsonResult["districts"] as? [[String: Any]]
                                                    let modalViewController = ViewControllerShowProgressLong()
                                                    modalViewController.modalPresentationStyle = .overCurrentContext
                                                    let labelText: UILabel = modalViewController.view.viewWithTag(1) as! UILabel
                                                    labelText.text = "Округ: ХХХ\nРайон: ХХХ"
                                                    let labelPercent: UILabel = modalViewController.view.viewWithTag(3) as! UILabel
                                                    let progress: UIProgressView = modalViewController.view.viewWithTag(2) as! UIProgressView
                                                    progress.setProgress(0, animated: true)
                                                    self.dismiss(animated: true){
                                                        self.present(modalViewController, animated: true, completion: nil)
                                                    }
                                                    //let progressDialog = ProgressDialog()
                                                    //progressDialog.presentFromView(view: self.view)
                                                    countDists = countDists + (nomDistrics?.count)!
                                                    var count:Int = 0
                                                    for j in stride(from: 0, to: (nomDistrics?.count)!, by: 1){
                                                        let DistName: String = (nomDistrics![j]["DistrictName"] as! NSString) as String
                                                        let districts = Districts(context: context)
                                                        districts.name = DistName
                                                        regions.addToRegToDist(districts)
                                                        Alamofire.request(url+token+"&districtid="+String((nomDistrics![j]["Id"] as! NSNumber) as! Int)).responseJSON{ response in
                                                            if (response.error == nil){
                                                                let jsonData: Data = response.data!
                                                                do{
                                                                    if let jsonResult = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String:AnyObject] {
                                                                        if (jsonResult["Status"] as! Int==0){
                                                                            print(Float(count)/Float(countDists))
                                                                            if(count != 0){
                                                                                labelText.text = "Округ: " + RegionName + "\nРайон: "+DistName
                                                                                progress.setProgress(Float(count)/Float(countDists), animated: true)
                                                                                labelPercent.text = String(Float(count)/Float(countDists)*100)+"%"
                                                                            }
                                                                            count = count + 1
                                                                            let nomStreets = jsonResult["Addresses"] as? [[String: Any]]
                                                                            for k in stride(from: 0, to: (nomStreets?.count)!, by: 1){
                                                                                labelText.text = DistName + " " + String(k)
                                                                                let billbObj = nomStreets![k]["Billboards"] as? [[String: Any]]
                                                                                if (billbObj?.count != 0){
                                                                                    let Name: String = (nomStreets![k]["Street"] as! NSString) as String
                                                                                    let fetchRequest: NSFetchRequest<Streets> = Streets.fetchRequest()
                                                                                    let predicate = NSPredicate(format: "name == %@ && strToDist.name == %@",Name, DistName)
                                                                                    fetchRequest.predicate = predicate
                                                                                    do {
                                                                                        let searchResults = try context.fetch(fetchRequest)
                                                                                        if (searchResults.count == 0){
                                                                                            let streeets = Streets(context: context)
                                                                                            streeets.name = Name
                                                                                            districts.addToDistToStr(streeets)
                                                                                            for z in stride(from: 0, to: (billbObj?.count)!, by: 1){
                                                                                                let addresses = Addresses(context: context)
                                                                                                addresses.house = nomStreets![k]["House"] as! String?
                                                                                                addresses.build = nomStreets![k]["Building"] as! String?
                                                                                                ...
                                                                                                streeets.addToStrToAddresses(addresses)
                                                                                                districts.addToDistToStr(streeets)
                                                                                            }
                                                                                        }else{
                                                                                            for result1 in searchResults {
                                                                                                for z in stride(from: 0, to: (billbObj?.count)!, by: 1){
                                                                                                    let addresses = Addresses(context: context)
                                                                                                    addresses.house = nomStreets![k]["House"] as! String?
                                                                                                    addresses.build = nomStreets![k]["Building"] as! String?
                                                                                                    ...
                                                                                                    result1.addToStrToAddresses(addresses)
                                                                                                    districts.addToDistToStr(result1)
                                                                                                }
                                                                                            }
                                                                                        }
                                                                                    } catch {
                                                                                        print("Error with request: \(error)")
                                                                                    }
                                                                                }
                                                                            }
                                                                            if (i == (nomRegions?.count)! - 1  && j == (nomDistrics?.count)! - 1){
                                                                                CoreDataManager.instance.saveContext(context: context)
                                                                                UIApplication.shared.isIdleTimerDisabled = false
                                                                                let defaults = UserDefaults.standard
                                                                                defaults.set(0, forKey: "NomPhotoDone")
                                                                                defaults.set(true, forKey: "isShowSend")
                                                                                defaults.set("Date", forKey: "sortType")
                                                                                defaults.synchronize()
                                                                                self.isSuccess = true
                                                                                self.dismiss(animated: true){
                                                                                    let vc = self.createMenu()
                                                                                    self.present(vc, animated: true, completion: nil)
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }catch{
                                                                    
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }catch{
                                            
                                        }
                                    }
                                    
                                }
                            }
                        }
                    }
                }catch{
                    
                }
            }
            
        }
Добавлено через 33 секунды
Буду признателен за любую помощь.

Вернуться к обсуждению:
Progress dialog
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2017, 12:47
Готовые ответы и решения:

Progress Button, как вызвать метод, а после закончить Progress?
Есть кнопка с прогрессом, по ее клику вызывается это: private void...

Progress bar
как сделать так, чтобы при нажатии кнопки(загружающая в memo текст) она...

Gauge1.Progress
как при определенном количестве нажатий на кнопку постепенно увеличивать...

Progress Bar
Вот. Нашел способ как сделать прогресс бар. Думаю будет интересно. ...

progress bar
Написала код для простенького web браузера вот код brouser.h #ifndef...

5
Другие темы раздела
Swift Работа с формами и кнопками http://www.cyberforum.ru/swift/thread2026643.html
Добрый день. Я только начал осваивать Swift и у меня такой вопрос. Пользуюсь последним xCode Beta Есть два View Controller'a на одном три кнопки например, на другом одна кнопка и UiWebView ...
Swift Выгрузка массива изображений из firebase Всем привет. Помогите кто чем сможет)) Хочу выгрузить массив изображений, но не могу сообразить как выгрузить этот массив изображений из firebase. Для этого использую collectionView внутри... http://www.cyberforum.ru/swift/thread2022551.html
Как изменить цвет кнопки в Os X application Swift
Как изменить цвет кнопки в Os X application . Никак не могу изменить ?
Java to Swift3 Swift
Здравствуйте! У меня есть готовое приложение на Андроид написаное на Java/Android Studio. В нем есть набор объектов. Есть ли какой-нибудь конвертер с Java на Swift3? Или все переписывать руками?
Swift Не выводит данные с массива в UIPickerView и и ответ выводится до запятой http://www.cyberforum.ru/swift/thread2012052.html
Сам новичок в данной среде разработки, опираюсь на туториалы и методичку от Apple. Делаю калькулятор по обычной формуле: вводишь значения при помощи pickerview и дальше программа считает эти данные...
Swift Видео уроки Кто подскажетхороший курс уроков по разработке под iOS ? Желательно максимально подробный подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru