OVH Cloud OVH Cloud

[cocoa-java] NSUserDefaults NSMutableArray et Float

8 réponses
Avatar
une.bevueVOTEZ
bon, je souhaite enregistrer dans les prefs de l'user la largeur des
colonnes d'une NSTableView.

(d'après mon expérience l'autosave ne marche pas quand on change le
nombre de colonnes)

les widths sont en float que je converti en Float et que je met dans une
NSMutableArray (le nombre de colonnes varrie car je permet à l'user de
supprimer) .

quand je récupère mes widths, j'ai un truc très très étrange :

NSMutableArray widths = (NSMutableArray) prefs.objectForKey(widthsKey);

si je print widths, j'obtiens un :

widths = (290, 90, 210, 50, 30, 30, 242)

tout à fait sympatique ;-)

MAIS quand je veux utiliser une de ces width j'obtiens :

width 3.06244775E17
width 2.19902326E13
[...]
width 8.1064793E16

même si je fais :

float width = Float.valueOf("" + widths.objectAtIndex(j)).floatValue();

ou :

float width = ((Float) widths.objectAtIndex(j)).floatValue();


qui n'a pas grand chose à voir....

bon, j'ai trouvé une bidouille "workover" pour ne pas être bloqué, mais
bon je ne pige pas...

pour sauver mes widths dans les prefs, je fais :

Enumeration e = aNSTableView.tableColumns().objectEnumerator();
NSTableColumn column;
NSMutableArray widths = new NSMutableArray();
while ((column = (NSTableColumn)e.nextElement()) != null) {
widths.addObject(new Float(column.width()));
}
prefs.setObjectForKey(widths, widthsKey);

--
une bévue

8 réponses

Avatar
fabienNO.conusSPAM
MAIS quand je veux utiliser une de ces width j'obtiens :

width 3.06244775E17
width 2.19902326E13
[...]
width 8.1064793E16

même si je fais :

float width = Float.valueOf("" + widths.objectAtIndex(j)).floatValue();

ou :

float width = ((Float) widths.objectAtIndex(j)).floatValue();


qui n'a pas grand chose à voir....



je crois me souvenir d'avoir eu un problème comme celui-la.

Et si tu fais un:

float width = ((Number) widths.objectAtIndex(j)).floatValue();

Avatar
une.bevueVOTEZ
Fabien Conus wrote:

float width = ((Number) widths.objectAtIndex(j)).floatValue();


oui, merci, effectivement, c'est un problème >> connu <<, dans
l'intervalle je suis passé en Integer ET, je me suis retrouvé avec des
Long ;-)

bravo le bridge cocoa-java...
--
une bévue

Avatar
fabienNO.conusSPAM
Une bévue wrote:

bravo le bridge cocoa-java...


bah, c'est un problème que nous n'auront bientôt plus puisque nous
allons tous devoir passer à Obj-C

;-)

Avatar
une.bevueVOTEZ
Fabien Conus wrote:

bah, c'est un problème que nous n'auront bientôt plus puisque nous
allons tous devoir passer à Obj-C


j'ai commencé à regarder Obj-C...

je me suis "fait" le bouquin "Coca par la pratique"...

ça m'aide en ce qui concerne cocoa-java, quand à switcher sur obj-c
c'est autre chose deux pré-riquisit pour moi :

- qu'aviendra-t'il d'Apple après passage à Intel ie. vont-ils y laisser
des plumes ou augmenter (toward 10 %) la clientelle ?
- j'en sais pas assez à propos de core)data mais il m'a semblé (SQL Lite
oblige ?) que c'est basé sur une bd standard sql, càd relationnelle, bon
moi j'utilise db4objects, conceptuellement supérieur, il me semble...

déjà cocoa-java, à la place de swing-java, m'oblige à ré-écrire le code
de mon arbre des appellation s because une NSOutlineView ne se manipule
pa du tout comme une JXTreeTable...
--
une bévue

Avatar
lucsky
Une bévue wrote:

- j'en sais pas assez à propos de core)data mais il m'a semblé (SQL Lite
oblige ?) que c'est basé sur une bd standard sql, càd relationnelle, bon
moi j'utilise db4objects, conceptuellement supérieur, il me semble...


Ca n'a *strictement* rien à voir.

CoreData supporte plusieurs format de stockage: XML, binaire, SQLite ou
en RAM. Le fait que la persistence se fasse avec tel ou tel type de
stockage n'est qu'un **détail d'implémentation**.

Alors si SQLite te pose un problème quelconque, tu peux toujours passer
en stockage binaire, par exemple, et ton "conceptuellement supérieur"
n'aura alors vraiment plus aucun fondement (déjà qu'à la base...) :>

--
Luc Heinrich -

Avatar
une.bevueVOTEZ
Luc Heinrich wrote:


Ca n'a *strictement* rien à voir.


je n'en suis pas persuadé, pour l'instant.
--
une bévue

Avatar
lucsky
Une bévue wrote:

je n'en suis pas persuadé, pour l'instant.


Relis ce que je t'ai expliqué. Plusieurs fois. :>

--
Luc Heinrich -

Avatar
une.bevueVOTEZ
Luc Heinrich wrote:

Relis ce que je t'ai expliqué. Plusieurs fois. :>


à propos de core-data ?

--
une bévue