1.0.1

Kern 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最近发布2016年9月

Dustin Steele 维护。



Kern 1.0.1

  • Dustin Steele

一个简单的Core Data管理器,易于设置和获取。Kern允许使用简单的获取方法创建一个简单的上下文。它在功能方面远不如MagicalRecord和ObjectiveRecord等库强大。它服务于一个非常简单的目的,在同一个上下文中(具有后台处理)存储和获取数据。

它从上述项目的作品中借用了大量内容,但将其精简到其实际用途的最小化。我对它的原创性不做任何声明(称之为混合体)。

包含的一个原始的概念/实现包含了数据映射。它允许给定的NSManagedObjectModel指定一组映射属性(以及数据类型),然后使用这些属性轻松保存更改。

使用

设置堆栈

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Setup Kern
        [Kern setupAutoMigratingCoreDataStack];

        return YES;
    }

创建一些记录

    User *jimmy = [User createEntity]; //create an empty entity
    jimmy.firstName = @"Jimmy";
    jimmy.lastName = @"James";
    jimmy.luckyNumber = @3;

    User *doogie = [User createEntity:@{@"firstName": @"Doogie", @"lastName": @"Howser", @"luckyNumber": @7}];

    User *george = [User createEntity:@{"firstName": @"George", @"lastName": @"Bluth", @"luckyNumber": @13}];

    User *michael = [User createEntity:@{"firstName": @"Michael", @"lastName": @"Bluth", @"luckyNumber": @13}];

    User *georgeMichael = [User createEntity:@{"firstName": @"George Michael", @"lastName": @"Bluth", @"luckyNumber": @9}];

    User *buster = [User createEntity:@{"firstName": @"Buster", @"lastName": @"Bluth"}];  // not lucky

    User *oscar = [User createEntity:@{"firstName": @"Oscar", @"lastName": @"Bluth"}];  // not lucky

保存记录

    [Kern saveContext]; // save the whole context

    User *ron = [User createEntity:@{"firstName": @"Ron", @"lastName": @"Swanson", @"luckyNumber": @11}];
    [ron saveEntity]; // save a single instance

查找和排序记录

简单的强大的查找/排序选项。

    NSArray *all = [User findAll]; // um, all the records

    // find and sort by luckyNumber
    NSArray *sorted = [User findAllSortedBy:@"luckyNumber"]; // ascending sort if not specified

    // find and sort by luckyNumber (dictionary form)
    sorted = [User findAllSortedBy:@{@"luckyNumber": @"asc"}];

    // find and sort by luckyNumber (plain old NSSortDescriptor)
    sorted = [User findAllSortedBy:[NSSortDescriptor sortDescriptorWithKey:@"luckyNumber" ascending:YES]];

    // sort by lastName descending, luckyNumber ascending
    sorted = [User findAllSortedBy:@"lastName desc,luckyNumber"];

    // sort by lastName descending, luckyNumber ascending (dictionary form)
    sorted = [User findAllSortedBy:@[@{@"lastName": "DESC"}, @{@"luckyNumber": @"ASC"}]];

    // sort by lastName descending, luckyNumber ascending (sort descriptors)
    NSArray *descriptors = [NSArray arrayWithObjects:
            [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:NO],
            [NSSortDescriptor sortDescriptorWithKey:@"luckyNumber" ascending:YES],
        nil];
    sorted = [User findAllSortedBy:descriptors];

    // limiting
    NSArray *top3Luckiest = [User findAllSortedBy:@"luckyNumber desc" withLimit:3];

    // conditionals (where)
    // find all the bluth's
    NSArray *allBluths = [User findAllWhere:@"lastName ==[cd] 'bluth'")];

    // find all the bluths
    allBluths = [User findAllWhere:@"lastName ==[cd] %@", @"bluth"];

    // find all the bluths with a luckyNumber of 13
    allBluths = [User findAllWhere:@"lastName ==[cd] %@ AND luckyNumber == %@", @"bluth", @13];

    // find all the bluths with a luckyNumber of 13 (dictionary form)
    allBluths = [User findAllWhere:@{@"lastName": @"Bluth", @"luckyNumber": @13}];

    // find all the bluths with a luckyNumber of 13 (plain old NSPredicate)
    allBluths = [User findAllWhere:[NSPredicate predicateWithFormat:@"lastName ==[cd] %@ AND luckyNumber == %@", @"bluth", @13]];

    // find, sort, and limit
    // find all sorted by luckyNumber, limited to top 2, where lastName is bluth
    NSArray *topTwoBluths = [User findAllSortedBy:@"luckyNumber desc" withLimit:2 where:@"lastName ==[cd] %@", @"bluth"]];

    // fetching with NSFetchedResultsController
    // fetch all sorted by lastName, luckyNumber DESC and grouped by lastName
    NSFetchedResultsController *frc = [User fetchAllSortedBy:@"lastName, luckyNumber DESC" groupedBy:@"lastName" where:@"lastName NOT IN %@", @[@"Howser", @"James"]];
    frc.delegate = self; // if you want to control the delegate
    NSError *error = nil;
    [frc performFetch:&error]; // perform the fetch
    if (error) {
        NSLog(@"Uh oh.");
    }

  // See the included tests for more details
  // See the headers for other fetching variants

导入数据

    // TODO: Describe the process here.  (For now, you can look at the headers, example app, and tests.)

要求

它需要ARC和iOS 7+。它仅适用于iOS。好吧,它可能在旧版本/其他OS要求上运行,但这只是它构建/测试过的地方。

作者

Dustin Steele

许可证

Kern在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。