• 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: Trouble w/ key-value binding validation
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Trouble w/ key-value binding validation


  • Subject: Re: Trouble w/ key-value binding validation
  • From: Luc Van Bogaert <email@hidden>
  • Date: Sat, 07 Nov 2015 10:09:21 +0100
  • X_v_e_cd: 8ef4665d61b45450d63d1ab02c5ec2e1
  • X_v_r_cd: 6d0b29d87bf2e40e1138f6fd5297b2dc

> On 07 Nov 2015, at 01:56, Quincey Morris <email@hidden> wrote:
>
> On Nov 6, 2015, at 15:23 , Luc Van Bogaert <email@hidden <mailto:email@hidden>> wrote:
>>
>> In a tableview with a content binding and a value binding on the table cell view textfields to the model's objectValue keypaths, I'm having trouble getting the key-value validation to work correctly. In the model class, I have implemented the required validation methods (validateKey(_ :) throws), for each of the properties, but the validation method only seems to get called for scallar types and not for eg. String types. I've made sure I checked "Validates immediately" in the binding attributes.
>
> a. When you edit the text fields, does the model String property get updated?
>
> b. Can you show us an example function signature line for a scalar validation method, and one for a string validation method?
>
> c. Can you show us an example of a model key path you’re using when binding to objectValue?
>
> It occurs to me that there might be a bridging issue here. Note that the generic validation method (which is what routes the validation to a specific validate<Key> method) looks like this in the Swift version of NSKeyValueCoding.h:
>
> 	    public func validateValue(ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey inKey: String) throws
>
> It’s possible that the validate<Key> method declaration needs to be something like this. (According to this theory, the scalar validation works because the object<->scalar conversion happens within KVC, and so it’s staying within the Obj-C type world.)
>
> Does the model object inherit from NSObject and/or conform to NSObject protocol?
>

a. Yes, I can edit the textfields in the tabel and the change is persistent so the model gets updated.

b. For title: String property :

    func validateTitle(ioValue:
        AutoreleasingUnsafeMutablePointer<String?>) throws {...}

For raise: Float property

    func validateRaise(ioValue:
        AutoreleasingUnsafeMutablePointer<NSNumber?>) throws {...}

c. I'm binding to "objectValue.title"

declaration of the String property:

class Album: NSObject {

    var title: String

declaration of the Float property:

class Employee: NSObject {

    var raise: Float = 0.05

Note that the model indeed inherits from NSObject.



--
Luc Van Bogaert
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: Trouble w/ key-value binding validation
      • From: Luc Van Bogaert <email@hidden>
References: 
 >Trouble w/ key-value binding validation (From: Luc Van Bogaert <email@hidden>)
 >Re: Trouble w/ key-value binding validation (From: Quincey Morris <email@hidden>)

  • Prev by Date: Re: Do playgrounds work at all in 7.1?
  • Next by Date: Re: Trouble w/ key-value binding validation
  • Previous by thread: Re: Trouble w/ key-value binding validation
  • Next by thread: Re: Trouble w/ key-value binding validation
  • Index(es):
    • Date
    • Thread