Mijn vraag
Na veel knutselen met Domoticz miste ik, naast Pilot, een app voor de iphone om mijn domoticz aan te sturen. Daarom ben ik de laatste paar weken aan de slag gegaan met xcode. Waarbij ik de eerste week, met mijn beperkte kennis aan swift, aardig aan het kloten was met alleen het opslaan van velden kom ik bij mijn, misschien op dit moment iets over mijn hoofd gaande probleem. Ik hoop dat jullie me hier een klein zetje in de richting kunnen geven.
Ik parse een json URL van mijn domoticz. Deze URL bouw ik op vanuit de velden die opgeslagen zijn vanuit mijn settings.
Resultaat:
In mijn "console" zie ik dat print("\(name)") al mijn domoticz devices weergeeft. De parse lijkt dus goed te zijn gegaan. Wanneer ik onderaan, onder task.resume() de array wil aanroepen lijkt het mis te gaan. Ik kan de array niet meer weervinden. Ik heb dus het gevoel dat de array niet meer bestaat. Wanneer ik hier iets aanpas krijg ik een foutmelding: Terminated due to signal 11
Er zijn op het web veel tutorials voor het lezen van Json, maar vaak liep ik hier tegen problemen aan. Vooral omdat ik een remote URL gebruik en ik er vervolgens een tabel van wil maken. Het bovengenoemde script is een groot deel geplukt vanuit een aantal tutorials en het beetje zelfkennis wat ik heb. Gezien mijn kennis gaat dit probleem ver boven mijn hoofd, maar toch een belangrijke functionaliteit binnen de app die ik wil maken.
Iemand enig idee waar mijn denkfout zit?
[edit]
Oeh, vergeten te melden. De tabel is prima te vullen met de volgende code:
Console geeft het volgende weer:
Na veel knutselen met Domoticz miste ik, naast Pilot, een app voor de iphone om mijn domoticz aan te sturen. Daarom ben ik de laatste paar weken aan de slag gegaan met xcode. Waarbij ik de eerste week, met mijn beperkte kennis aan swift, aardig aan het kloten was met alleen het opslaan van velden kom ik bij mijn, misschien op dit moment iets over mijn hoofd gaande probleem. Ik hoop dat jullie me hier een klein zetje in de richting kunnen geven.
Ik parse een json URL van mijn domoticz. Deze URL bouw ik op vanuit de velden die opgeslagen zijn vanuit mijn settings.
code:
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
| // declaratie variabelen let LaadIPadres = userDefaults.stringForKey("IPadresItem") let LaadPort = userDefaults.stringForKey("PortItem") let URLalldevices = "http://" + LaadIPadres! + ":" + LaadPort! + "/json.htm?type=devices&filter=light&used=true&order=Name" // begin Json // let requestURL: NSURL = NSURL(string: URLalldevices)! let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) let session = NSURLSession.sharedSession() let task = session.dataTaskWithRequest(urlRequest) { (data, response, error) -> Void in let httpResponse = response as! NSHTTPURLResponse let statusCode = httpResponse.statusCode if (statusCode == 200) { do{ let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) let results: NSArray = json["result"] as! NSArray for item in results { let name: String = item["Name"] as! String // let ID: String = item["Status"] as! String // let Switch: String = item["SwitchType"] as! String print("\(name)") self.objects.addObject(name) } }catch { print("Er gaat iets goed fout") } } } task.resume() // end self.tableview.reloadData() |
Resultaat:
In mijn "console" zie ik dat print("\(name)") al mijn domoticz devices weergeeft. De parse lijkt dus goed te zijn gegaan. Wanneer ik onderaan, onder task.resume() de array wil aanroepen lijkt het mis te gaan. Ik kan de array niet meer weervinden. Ik heb dus het gevoel dat de array niet meer bestaat. Wanneer ik hier iets aanpas krijg ik een foutmelding: Terminated due to signal 11
Er zijn op het web veel tutorials voor het lezen van Json, maar vaak liep ik hier tegen problemen aan. Vooral omdat ik een remote URL gebruik en ik er vervolgens een tabel van wil maken. Het bovengenoemde script is een groot deel geplukt vanuit een aantal tutorials en het beetje zelfkennis wat ik heb. Gezien mijn kennis gaat dit probleem ver boven mijn hoofd, maar toch een belangrijke functionaliteit binnen de app die ik wil maken.
Iemand enig idee waar mijn denkfout zit?
[edit]
Oeh, vergeten te melden. De tabel is prima te vullen met de volgende code:
code:
1
2
3
| self.objects.addObject("item 1") self.objects.addObject("item 2") self.objects.addObject("item 3") |
Console geeft het volgende weer:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| Meterkast Kamer Tv meubel Deurbel Cateye motiondetector Hoofdschakelaar Group d.Mancave Hue woonkamer Mancave spot 4 Mancave spot 3 Mancave spot 2 Mancave spot 1 Mancave lamp Woonkamer hue 1 Woonkamer hue 2 Woonkamer hue 3 PowerOff TV Kijken MediaPC FM Radio Luisteren |
[ Voor 10% gewijzigd door grote_oever op 24-04-2016 22:39 ]