ParseModel-iOS icon indicating copy to clipboard operation
ParseModel-iOS copied to clipboard

"-[PFObject <FIELD NAME>]: unrecognized selector sent to instance" when accessing field of related object

Open fatuhoku opened this issue 10 years ago • 2 comments

I've got two ParseModel subclasses: Foo and Bar. Foo holds an instance of Bar like so:

@interface Foo : ParseModel
@property(nonatomic, strong) Bar *bar;
@end

@interface Bar : ParseModel
@property(nonatomic, strong) NSNumber *theAnswer;
@end

I fetch all Foos. I want to assert some properties about bars

        PFQuery *query = [PFQuery queryWithClassName:@"Foo"];
        query.cachePolicy = kPFCachePolicyCacheThenNetwork;
        [query includeKey:@"bar"];
        [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            // Print information about foos.
            Foo *foo = objects[0];
            expect(foo.bar).to.beInstanceOf([Bar class]); // FAILS: expected Bar but was actually PFObject
            expect(foo.bar.theAnswer).to.equal(@42); // -[PFObject theAnswer]: unrecognized selector sent to instance...
        }];

What's the expected behaviour here? Must I marshall PFObjects in and out of those properties myself?

fatuhoku avatar Sep 13 '14 15:09 fatuhoku

Oh, I didn't know you had to call +registerParseModel on every ParseModel class! Perhaps the README could have a section on this.

fatuhoku avatar Sep 13 '14 15:09 fatuhoku

Okay... this is tré strange. +registerParseModel did make my test succeed yesterday, but now it doesn't work...

fatuhoku avatar Sep 14 '14 17:09 fatuhoku