Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 155641
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T10:11:29+00:00 2026-05-11T10:11:29+00:00

I have a class that contains a collection of objects. I am trying to

  • 0

I have a class that contains a collection of objects. I am trying to create a method that will return the first member of the collection matching a supplied predicate.

Here is the collection method:

... //predicate is a boolean method that accepts an object as its single parameter -(id<Notation>) getFirstChildMatching: (SEL) predicate declaredInInstance:(id) instance {     NSMethodSignature *sig = [[instance class] instanceMethodSignatureForSelector:predicate];     NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:sig];     [myInvocation setTarget:instance];     [myInvocation setSelector:predicate];      int numItems = childNotations.count;     for(int i=0;i< numItems;i++)     {         id<Notation> thisNotation = [childNotations objectAtIndex:i];         [myInvocation setArgument:thisNotation atIndex:2];         BOOL result =NO;         [myInvocation retainArguments];         [myInvocation invoke];         [myInvocation getReturnValue:&result];          if (result)             return thisNotation;      }      return nil; } 

I have created a test class that tests this method. Here is the test method plus the predicate:

- (void) testGetFirstChildMatching {     Leaf *line1 = [[Leaf alloc] initWithValue:1 step:Step_A andNumber:1];     Leaf *line2 = [[Leaf alloc] initWithValue:2 step:Step_B andNumber:2];      SEL mySelector = @selector(valueIs1:);      id<CompositeNotation> compositeNotation = [[CompositeNotation alloc] init];     [compositeNotation addNotation:line1];     [compositeNotation addNotation:line2];      id notation = [compositeNotation getFirstChildMatching: mySelector declaredInInstance:self];     STAssertEquals(YES, [notation isKindOfClass:[Leaf class]], @'Should be of type Leaf: %@', notation);     //Leaf *found = ((Leaf *)notation);     STAssertEquals([notation value], line1.value, @'Should have found line 1 with value 1: actual %i', [notation value]);     [line1 release];     [line2 release]; }  -(BOOL) valueIs1: (Leaf *) leaf {     if (leaf.value == 1)         return YES;      return NO; } 

What I am finding is that on the ‘if (leaf.value == 1)’ line I am getting an ‘unrecognized selector sent to class’. What doesn’t make sense is that the debugger can see the value property and it’s value so the object clearly has that select. Any ideas?

btw Leaf implements the notation protocol

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T10:11:29+00:00Added an answer on May 11, 2026 at 10:11 am

    I eventually found the problem. It was this line

    [myInvocation setArgument:thisNotation atIndex:2]; 

    it should have been

    [myInvocation setArgument:&thisNotation atIndex:2]; 

    Thanks

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a concrete class that contains a collection of another concrete class. I
I have an entity class Foo foo that contains Collection<Bar> bars . I've tried
I have a class which contains a static collection that can be used across
I have a class that contains this class method: def self.get_event_record(row, participant) event =
I have a class that contains objects of two other classes. I need one
I'm trying to create a collection class in Flex that is limited to housing
I have a class ShipmentsCollection that inherits ObservableCollection which contains shipment objects (entities). This
I have a class that contains a list of objects. What's the best way
I have this class that contains vars for db connection; Imports Microsoft.VisualBasic Imports System.Data.SqlClient
I have a class that contains data from some model. This class has metadata

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.