Bienvenue invité ( Connexion | Inscription )
8 May 2019, 03:07
Message
#1
|
|
![]() Adepte de Macbidouille ![]() Groupe : Validating Messages : 192 Inscrit : 15 May 2005 Lieu : Buenos Aires - Argentina Membre no 39 263 |
Bonjour à tous,
pour une application MacOS que je voudrais programmer, je cherche à placer une (plusieurs) tableView dans un NSDocument. Dans le StoryBoard, dans la fenêtre document, je fais le lien entre la tableView et un ArrayController. Tout ça fonctionne correctement. Ce que je n'arrive pas à faire, c'est la sauvegarde des données du document, et donc des données de la TableView. Quelqu'un aurait-il un lien vers un tutoriel qui explique comment faire? J'ai beau chercher sur Google, je n'ai pas réussi à trouver quelque chose qui me satisfasse. Merci d'avance... -------------------- MacBook Air 13'', 8Go RAM, 256 Go / MacBook Pro, 8Go RAM, 500Go / MacMini Intel (2006), 2Go RAM, 500Go
|
|
|
|
![]() |
9 May 2019, 14:53
Message
#2
|
|
![]() Adepte de Macbidouille ![]() Groupe : Validating Messages : 192 Inscrit : 15 May 2005 Lieu : Buenos Aires - Argentina Membre no 39 263 |
Merci beaucoup pour la réponse. En fait j'avais un peu avancé dans mes recherches, ce qui va me permettre d'être beaucoup plus précis dans ma demande (désolé d'avoir été si peu précis dans mon message antérieur). Comme l'application est nouvelle, j'essaye d'utiliser le "nouveau" système Codable, plutôt que NSCoding et NSKeyArchiver.
Ceci est le code de ma structure: Code import Foundation struct Sound: Codable { var id: Int var name: String var fileUrl: String var beginsAt: Double var endsAt: Double } J'ai ensuite dans le fichier Document.swift une variable sounds: [Sound], liée à la variable sounds du viewController qui me permet de remplir la NSTableView. Ma fonction d'écriture du fichier est donc: Code override func data(ofType typeName: String) throws -> Data { if let content = viewController?.sounds { let encodedData = try! JSONEncoder().encode(content) return encodedData } throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil) } Jusque là tout va bien, par contre, c'est pour la lecture de fichier que je bloque. Le truc qui me paraît le plus logique est: Code override func read(from data: Data, ofType typeName: String) throws { sounds = try! JSONDecoder().decode([Sound].self, from: data) throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil) } Pas de message d'erreur dans la console, mais juste une alert box avec "The document could'nt be opened". Si j'affiche le contenu de sounds dans la console, pas de problème, ça a l'air d'être correctement décodé. Mais que dois-je faire pour que le document soit ouvert avec ce contenu? Ce message a été modifié par olivion - 10 May 2019, 02:01. -------------------- MacBook Air 13'', 8Go RAM, 256 Go / MacBook Pro, 8Go RAM, 500Go / MacMini Intel (2006), 2Go RAM, 500Go
|
|
|
|
olivion [Swift] NSTableView et NSDocument 8 May 2019, 03:07
schlum Code override func data(ofType typeName: S... 9 May 2019, 00:54
schlum Normal, tu envoies une exception systématiquement... 10 May 2019, 19:40
olivion Il y a des jours comme ça où on se sent très b�... 11 May 2019, 21:10
olivion Je continue sur ma lancée parce que je suis confr... 13 May 2019, 00:03
schlum Je ne vois pas… Essaye avec NSKeyedArchiver / NS... 13 May 2019, 01:53
olivion Merci Schlum de ta réponse. Comme j'ai du mal... 15 May 2019, 02:17
olivion Je précise un peu plus mes recherches sur le suje... 15 May 2019, 12:43
olivion Bon, j'ai eu ma solution. Le problème de lect... 21 May 2019, 11:23
schlum Désolé, pas eu les notifications de réponses…... 25 May 2019, 00:59
olivion Salut Schlum. En fait, c'est pas complètement... 25 May 2019, 03:48
schlum Tu as vu cette technote d’Apple (section « Sec... 27 May 2019, 08:56
olivion Merci, mais oui, j'avais vu. Et mon problème ... 27 May 2019, 12:11![]() ![]() |
| Nous sommes le : 1st May 2026 - 21:33 |