Hello,<div><br><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div text="#000000" bgcolor="#ffffff">The sample shows how to use the NSPredicateEditor within a program
    and uses the NSMetadataQuery to query SpotLight for a list of names
    corresponding to the Predicates from your Address Book.<br></div></blockquote><div><br></div><div>A reminder: we never expose the underlying arrays as NSArray, instead we expose them as NSObject [] in the weak cases, and as NSMostDerived [] most of the time to get the advantage of strong typing.</div>
<div><br></div><div>In particular in the NSPredicate code, you need to fix:</div><div><br></div><div>TemplateViews return value - Also, it needs to become a property</div><div>PredicateWithSubpredicates - with the proper strong type parameter</div>
<div>DisplaableSubpredicatesOfPredicate - Strongly type return</div><div>Constructors - arguments are weakly typed NSArrays</div><div>LeftExpressions, Rightexpressions - array types and must be properties,</div><div>RighExpressionAttributeType - must become a property</div>
<div>Modifier - must become a property</div><div>Operators - must become a property and become strongly typed</div><div>Options - strongly type and become a property, and explore whether ti can be turned into an int [1]</div>
<div>CompoundTypes - array type</div><div>TemplatesWithAttributeKeyPathsInEntityDescription - both the array type issue and the name should be C#-ified</div><div><br></div><div><br></div><div>NSRuleEditor:</div><div>CriteriaForRow - array type</div>
<div>InsertRowAtIndexeWithTypeasBlaBlaBla - Shorten to be C#-like, not be a clone of the ObjC aapi</div><div><br></div><div>NSRuleEditorDelegate:</div><div><br></div><div>The lesson here is that the signature of the methods is required in Objective-C as people mix a lot of responders in the same file so they need to be unique, and they kind of become unique by using the prefix of the class, but this is not necessary in MonoMac.   You would use these as events, so the name must make sense as an event.   For example:</div>
<div><br></div><div>RuleEditorNumberOfChildrenForCriteriorWithRowType really is merely a compressed name of 3 parameters in ObjC: the first which is the prefix and we do not care about, the second is the actual oepration, and the third is the paramter.   So this really should become </div>
<div><br>int NumberOfChildren (NSRuleEditor ruleEditor, NSObject forCriterion, NSRuleEditorRowType withRowType)</div><div><br></div><div>[1] In general, uints are not CLS-compliant, which means that some languages have trouble accessing those APIs, we need to explore whether a Flags or int is sufficient in those cases.</div>
<div><br></div><div>NSPredicateEditor:</div><div>RowTemplates - array type</div><div><br></div></div></div></div>