MonoTouch 支持 NSFetchRequest 和 NSPredicate

Posted

技术标签:

【中文标题】MonoTouch 支持 NSFetchRequest 和 NSPredicate【英文标题】:Is having a NSFetchRequest with an NSPredicate supported in MonoTouch 【发布时间】:2011-10-13 19:29:07 【问题描述】:

我使用 NSPredicate 尝试了以下操作,但没有得到我期望的结果:

NSFetchRequest request = new NSFetchRequest ();
request.Entity = NSEntityDescription.EntityForName("Entity", managedObjectContext);

NSSortDescriptor sort = new NSSortDescriptor ("date", false);
request.SortDescriptors = new NSSortDescriptor[1]  sort ;
request.Predicate = NSPredicate.FromFormat("stringProperty == %@", new NSObject[1]new NSString("someString"));

error = null;
NSObject[] results = managedObjectContext.ExecuteFetchRequest (request, out error);

当前稳定版本的 MonoTouch (5.0) 是否支持 NSPredicate,还是我做错了什么?

【问题讨论】:

很难用 sn-p 来判断。你需要发布一个独立的测试用例 感谢您的回复。上面的 sn-p 在没有设置谓词的行的情况下效果很好。一旦我设置了谓词,我就不会从获取中得到任何结果(当我希望从数据和正在设置的谓词中得到任何结果时)。我认为要么不支持谓词,要么我错误地创建了谓词。有没有在 MonoTouch 中使用谓词的示例? 我快速浏览了一下,没有找到任何示例代码,所以它可能是一个错误(它看起来不是很常用)。您能否向我们提供(在此处或通过在 bugzilla.xamarin.com 上填写错误报告)一个小型、独立的测试用例,以便我们尝试查明问题? 我记录了一个错误 (bugzilla.xamarin.com/show_bug.cgi?id=2282)。 【参考方案1】:

哇,您在这里真的节省了编程行数。 用那个sn-p很难说,但是...... 我最好的建议是将这些行分成更多行,例如

NSPredicate *myPredicate = ...
if (myPredicate) 
NSLog (@"Predicate exists");

并继续这样逐行进行,以确保您获得正确的反馈。 我就是做这个的。可能会有所帮助

【讨论】:

那么,您是说在 MonoTouch 中为获取请求设置谓词对您有用吗?

以上是关于MonoTouch 支持 NSFetchRequest 和 NSPredicate的主要内容,如果未能解决你的问题,请参考以下文章

MonoTouch 支持 NSFetchRequest 和 NSPredicate

MonoTouch (Xamarin.iOS) Facebook 应用程序切换支持 iOS 5+

如何使用 EventKit (Calendar) 集成并仍然支持 iOS 3.x (MonoTouch)?

C# Monotouch/Xamarin.iOS - 不支持推送导航控制器

MonoTouch.Dialog StyledStringElement

WebView 的方向 - Monotouch