その主な目標は、プログラマーが Core Data を操作するための文のようなメソッド名を記述できるようにすることです。
例:
[moc RD_createUserWithName:@"John" age:@29 married:@YES];
[moc RD_createCompanyWithName:@"Yandex, LLC" ceo:me managers:@[firstManager, secondManager]];
[moc RD_createCompanyWithName:@"Google" ceos:@[larryPage, sergeyBrin] manager:jonathanGreen];
[moc RD_createBookWithAuthor:joanneRowling name:@"Harry Potter" publishedAt:[NSDate date]];
[moc RD_createTaskForProject:googleTalk priority:@3 members:nil];
[moc RD_createArticleAboutUser:alizar withName:@"Alizar - Habrahabr Soul" andTitle:@"Alizar"];
またはオブジェクトを見つける:
NSArray* mos = [moc RD_findUsersWithFirstName:@"Igori"];
NSManagedObject* mo = [moc RD_findUserWithLastName:@"Guliko" firstName:@"Igori"];
NSArray* mos = [moc RD_findBooksPublishedAt:[NSDate date]];
NSArray* mos = [moc RD_findFriendsLastSeenAt:[NSDate date]];
NSArray* mos = [moc RD_findBooksPublishedAfter:[NSDate date]];
NSArray* mos = [moc RD_findBooksPublishedBefore:[NSDate date]];
NSManagedObject* mo = [moc RD_findStudentCreatedBefore:[NSDate date] emailLike:@"*@gmail.com"];
NSArray* mos = [moc RD_findCompaniesRegisteredAfter:[NSDate date] limit:@10 offset:@1];
NSArray* mos = [moc RD_findClientsAddedBetween:@[startDate, endDate]];
NSArray* mos = [moc RD_findStudentsWithAgeBetween:@[@18, @28]]; // plural
NSManagedObject *mo = [moc RD_findStudentWithAgeBetween:@[@18, @28]]; // singular
NSArray* mos = [moc RD_findUsersWithGender:@[@"Male", @"Female"] lastNameLike:@"*ir*" ageBetween:@[@18, @29]];
NSArray* mos = [moc RD_findCarsWithFuelVolumeGreaterThan:@10];
NSArray* mos = [moc RD_findMessagesWithPositiveVotesSmallerThan:@29];
しかし、ARCをオフにしないと動作しません。(前の質問:動的メソッドのランタイム プログラミング時に ARC でコンパイルするとエラーが発生する)。
メーリングリストから:
私たちの推論は、(1) 型と所有権についてもっと注意する必要があることと、(2) 言語の恥ずかしいいぼをなくしたいこと (完全に未知のメソッドについて、警告)。どこかで宣言されていないメソッドを呼び出す正当な理由はありません。これを行う機能により、いくつかの非常に些細なバグ (セレクターのタイプミスなど) が、コンパイルの失敗ではなくランタイムの失敗になります。私たちは常にそれについて警告してきました。コードを修正してください。
では、Objective-C は動的メソッドを備えた本物の Objective-C ではなくなったのでしょうか?
私がRubyDavidsonで望んでいたものを実装することは今可能ですか?