Eric,

It's possible that NSTextFinder has a bug, in which case you should file a 
Radar with a sample app that reproduces the problem. Having that information, 
it may be possible to identify a workaround.

However, first tell me—are you setting the endsWithSearchBoundary parameter to 
YES for the last substring?

-KP

On Mar 28, 2012, at 1:58 PM, Eric Slosser <[email protected]> wrote:

> I'm using the NSTextFinder API with the stringAtIndex:len:effectiveRange: 
> style of exposing the text.
> 
> I have a test case which has 4 strings in it, "foo1" .. "foo4".  I show the 
> findbar, type 'foo', and click the 'find next' control.
> 
> Here are the calls that my client receives and the results being passed back.
> 
> firstSelectedRange = {0, 0} (char)
> stringLength:16
> 
> firstSelectedRange = {0, 0} (char)
> stringAtIndex:0  len:4 effRange:{0, 4} 'foo1'
> stringAtIndex:4  len:4 effRange:{4, 4} 'foo2'
> stringAtIndex:8  len:4 effRange:{8, 4} 'foo3'
> stringAtIndex:12  len:4 effRange:{12, 4} 'foo4'
> setFirstSelectedRange = {0, 3}
> KESIImageView+Finding scrollRangeToVisible: = {0,3}
> 
> So far, so good.  But when I check the replace checkbox, then click the 
> replace control, I see the following:
> 
> --- replace "foo" with "BA"
> stringLength:16
> firstSelectedRange = {0, 3} (char)
> replaceCharactersInRange: {0, 3} withString:'BA'
> setFirstSelectedRange = {0, 2}
> 
> firstSelectedRange = {0, 2} (char)
> stringAtIndex:2  len:3 effRange:{0, 3} 'BA1'
> stringAtIndex:3  len:4 effRange:{3, 4} 'foo2'
> stringAtIndex:7  len:4 effRange:{7, 4} 'foo3'
> stringAtIndex:11  len:4 effRange:{11, 4} 'foo4'
> stringAtIndex:15  len:0 effRange:{15, 0} '(null)'
> stringAtIndex:15  len:0 effRange:{15, 0} '(null)'
> stringAtIndex:15  len:0 effRange:{15, 0} '(null)'
> … <endless loop>
> 
> NSTextFinder keeps asking about the string that starts at index 15, but 
> because of the replacement, the only flattened string is only 15 chars long.  
> My 'stringLength' is only called before the replace, not after.  
> 
> Incremental searching is not enabled, so it's not that I'm forgetting to call 
> -(void)noteClientStringWithChange.
> 
> Am I doing something wrong?  How can I get NSTF to understand that the client 
> doesn't have anything at index 15?
> 
> 
> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list ([email protected])
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/kperry%40apple.com
> 
> This email sent to [email protected]


_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to