ios-queryable, 可以查询是核心数据的iqueryable/ienumerable的实现

分享于 

3分钟阅读

GitHub

  繁體 雙語
ios-queryable is an implementation of IQueryable/IEnumerable for Core Data
  • 源代码名称:ios-queryable
  • 源代码网址:http://www.github.com/martydill/ios-queryable
  • ios-queryable源代码文档
  • ios-queryable源代码下载
  • Git URL:
    git://www.github.com/martydill/ios-queryable.git
    Git Clone代码到本地:
    git clone http://www.github.com/martydill/ios-queryable
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/martydill/ios-queryable
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    #ios-queryable 是一个 objective-c 类别,提供和ienumerable类似于核心数据的功能。

    厌倦编写样板核心数据代码? 无法使用 LINQios可以查询是为你提供的? !

    函数支持查询组合和延迟执行,并实现ienumerable方法的子集,包括 ienumerable。take。skip。orderBy。first/firstordefault。single/singleordefault。count和所有的所有元素。

    它允许你编写这样的代码:

    
    
    
    
    NSArray* widgets = [[[[[self.managedObjectContext ofType:@"Widget"]
    
    
     where:@"Type == 'abc'"]
    
    
     orderBy:@"createddate"]
    
    
     take:5]
    
    
     toArray];
    
    
    
    

    而不是这样:

    
    
    
    
    NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
    
    
    NSEntityDescription* entity = [NSEntityDescription
    
    
     entityForName:@"Widget" inManagedObjectContext:self.managedObjectContext];
    
    
    [fetchRequest setEntity:entity];
    
    
    
    NSPredicate* predicate = [NSPredicate predicateWithFormat: @"type == 'abc'"];
    
    
    [fetchRequest setPredicate:predicate];
    
    
    
    NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc]
    
    
     initWithKey:@"createddate" ascending:YES];
    
    
    
    NSArray* sortDescriptors = [[NSArray alloc] initWithObjects: sortDescriptor, nil];
    
    
    [fetchRequest setSortDescriptors:sortDescriptors];
    
    
    
    [fetchRequest setFetchLimit:5]; 
    
    
    NSError* error;
    
    
    NSArray* widgets = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    
    
    
    

    它还支持NSFastEnumeration协议,允许在foreach循环中轻松使用:

    
    
    
    
    foreach(Widget* widget in [self.managedObjectContext ofType:@"Widget"])
    
    
    {
    
    
     // Do widgety stuff
    
    
    }
    
    
    
    

    #Usage 要使用 ios,只需将 nsmanagedobjectcontext+iqueryable。h 和 nsmanagedobjectcontext+iqueryable。m 复制到项目文件夹中即可。 然后,只需包含头文件,然后开始编写查询 !

    例如请查看测试项目中的测试。


    相关文章