1

J'essaie une application d'exemple de données de base, de Cocoa Programming - Aaron Hillegass.Problème de liaison de données de base dans NSNumberFormatter et NSDatePicker

Dans ce document, il est une entité de voiture, avec des propriétés suivantes:

  1. état - Int 16
  2. datePurchased - Date
  3. makeModel - Chaîne
  4. onSpecial - Boolean
  5. photo - Binary
  6. prix - Décimal

Il y a certains objets tels vue AS-

  1. TableView
  2. DatePicker
  3. Banque d'images, etc.

Certaines des liaisons effectuées sont-

  1. TableView -> TableColumn avec NSNumberFormatter (défini comme devise) -> valeur: arrangedObjects.price
  2. DatePicker -> Valeur: selection.datePurchased

problèmes sont les suivants:

  1. En TableColumn avec NSNumberFormatter il n'accepte pas les nombres décimaux que je suis entrée pour la monnaie, tels que - 123, 00 ou 123.45 ou +235 ou 567. Il affiche toujours ce message d'alerte: Erreur de formatage.

  2. Chaque fois que je sélectionne une ligne dans le tableau et modifie sa valeur correspondante dans le sélecteur de date, elle modifie simultanément les valeurs pour les autres enregistrements, c.-à-d. si pour la première ligne du tableau je l'ai mise au 25/12/2004, elle est conservée le 25/12/2004 pour les autres lignes.

Quelqu'un peut-il m'aider à résoudre mes problèmes? Le code source se trouve here

Merci,

Miraaj

Répondre

0

Le lien vers votre code me donne un 404. Le NSNumberFormatter est destiné à être utilisé avec le NSTextFieldCell dans votre tableau, pas dans la colonne du tableau. Si vous faites cela dans Interface Builder, vérifiez dans la vue de la liste pour voir que les objets sont disposés dans la hiérarchie:

NSTableView -> NSTableColumn -> NSTextFieldCell -> NSNumberFormatter. 
+0

Salut Sean, merci pour votre réponse:) ...la hiérarchie est la même que vous avez demandé de vérifier ie. NSTableView-> NSTableColumn-> NSTextFieldCell-> NSNumberFormatter. Il est assez surprenant que vous ne parveniez pas à télécharger le projet à partir du lien ci-dessus, je l'ai téléchargé dans des dossiers publics dans mon compte de boîte de dépôt, le lien réel est http://dl.dropbox.com/u/9999259/CarLot. zip – Devarshi

0

Contrôlé le code à nouveau sur mon réseau domestique et votre lien a bien fonctionné. Le problème avec le projet est que vous devez entrer le symbole de la monnaie lorsque vous modifiez la valeur ($ pour moi). Pour supprimer cette exigence, cochez la case 'Lenient' pour le formateur dans IB.

+0

ok .. thnx .. pouvez-vous m'aider à résoudre le 2ème problème? – Devarshi

+0

Lorsque je l'exécute, il modifie correctement la date à la valeur entrée. Il semble qu'ils utilisent tous le même pointeur jusqu'à ce qu'ils soient initialisés, alors changer un semble changer tout. Mais si vous les modifiez individuellement, j'ai trouvé que la valeur est correctement mise à jour pour les objets sélectionnés. Si vous utilisez une valeur par défaut pour la propriété date, vous devez éviter ce problème. Dans votre modèle de données, choisissez une date par défaut ou vous pouvez utiliser "Maintenant" pour obtenir la date actuelle. –