• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Cocoa Documentation on NSFormatter
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cocoa Documentation on NSFormatter


  • Subject: Re: Cocoa Documentation on NSFormatter
  • From: Vince DeMarco <email@hidden>
  • Date: Sat, 15 Dec 2001 18:23:58 -0800

On Saturday, December 15, 2001, at 02:15 pm, Thomas Lachand-Robert wrote:

Le samedi 15 dicembre 2001, ` 03:43 , Ondra Cada a icrit :

Thomas,

perhaps I just don't understand properly, but...

Thomas Lachand-Robert (TLR) wrote at Sat, 15 Dec 2001 14:44:07 +0100:
TLR> Also I discovered today that the "obj" item returned by
TLR> getObjectValue:(id *)obj forString:(NSString *)exprstr
TLR> errorDescription:(NSString **)error
TLR> is supposed to conform to NSCopying, since I got
TLR> *** -[myObjectClass copyWithZone:]: selector not recognized
TLR> Then, the correct declaration should be
TLR> getObjectValue:(id<NSCopying>*)obj forString:...

...I can't make sense of this. First, quite generally:

The "obj" is _made by the formatter and given to you_, not the vice versa.
Therefore, the declaration is quite right: since the returned object is just
plain id, you cannot presume any other behaviour -- especially not that it
conforms to NSCopying.



Sorry if it wasn't so clear, I explain more precisely. I am programming my own subclass of NSFormatter (to parse mathematical expressions). The Apple doc seems to indicate that you get a string for the text field and transform it to an id (named 'obj' in the declaration)... I said 'seems' because it is far for being clear on this subject, that's my first complaint: the chain of actions from the last key typed in the field to the complete validation is NOT explained. But you apparently confirm that by saying 'The "obj" is _made by the formatter and given to you_', that's exactly what I understand.

Anyway, in my own subclass of NSFormatter, getObjectValue... is called first with the string I typed in the text field. I return a custom object which is here a subclass of NSObject, say myObjectClass. SINCE the declaration declares the object of type 'id', I presume that any object should be convenient, but it is NOT. Just after the return, I get the exception, which apparently means that Apple expects here a NSObject<NSCopying>*, not just a basic 'id'. It turns out that my object is not intended to be copied, and doesn't implement NSCopying (it would be complicated and very inconvenient to do so). So I believe there is something wrong in Apple's doc, here, and don't know exactly what to do.


There is an example on the system of exactly this (A subclass of NSFormatter that parses math expressions) look in

/Developer/Examples/InterfaceBuilder/BusyPalette

vince


  • Follow-Ups:
    • Re: Cocoa Documentation on NSFormatter
      • From: Thomas Lachand-Robert <email@hidden>
References: 
 >Re: Cocoa Documentation on NSFormatter (From: Thomas Lachand-Robert <email@hidden>)

  • Prev by Date: Re: Problems with Apache
  • Next by Date: Re: Dynamic View Creation
  • Previous by thread: Re: Cocoa Documentation on NSFormatter
  • Next by thread: Re: Cocoa Documentation on NSFormatter
  • Index(es):
    • Date
    • Thread