Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

NSFetchRequest/NSPredicate behavior for different stores



All,

I have run into a problem that has me stumped. I am attempting to fetch objects matching user-specified criteria for a smart playlist implementation, and depending on the keypaths used and the type of backing store I am seeing different behavior! I am aware of the notes regarding using Cocoa-specific methods such as localizedCompare: in predicates, and I don't believe that is the problem (though it may be).

This code works fine using any store I've tested:

playlistObject = [NSEntityDescription insertNewObjectForEntityForName:@"DynamicPlaylist" inManagedObjectContext:managedObjectContext];
[playlistObject setPredicate:[NSPredicate predicateWithFormat:@"url CONTAINS[c] %@", @"nat"]];
// Results from the fetch are correct


Here is where the weirdness emerges: the following fetch works correctly using a binary store, but fails to return any results using an SQLite store:

playlistObject = [NSEntityDescription insertNewObjectForEntityForName:@"DynamicPlaylist" inManagedObjectContext:managedObjectContext];
[playlistObject setPredicate:[NSPredicate predicateWithFormat:@"metadata.title CONTAINS[c] %@", @"nat"]];
// No results found for SQLite, but correct for binary


However, the simple change of predicate to

[playlistObject setPredicate:[NSPredicate predicateWithFormat:@"metadata.title LIKE[c] %@", @"*nat*"]];

returns the expected results.

Is there an issue with using CONTAINS in predicates with keyPaths for an SQLite store? Or have I just missed something obvious?

Thanks,
Stephen

Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.