MagicalRecord(MR)を使用して、選択したクライアントに属するすべてのレコードを削除しています(クライアントレコードを正常に削除してから、そのクライアントの予定レコードを追跡します)。そうすることで、エラーが発生します。
[_PFArray MR_deleteInContext:]: unrecognized selector sent to instance
コードと関連する定義は次のとおりです。
// set up predicate using selectedClientKey
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"aClientKey == %@", selectedClientKey];
ClientInfo *clientSelected = [ClientInfo MR_findFirstWithPredicate:predicate inContext:localContext];
if(clientSelected) {
[clientSelected MR_deleteInContext:localContext];
[localContext MR_saveToPersistentStoreAndWait];
}
// delete clients appointments...
predicate = [NSPredicate predicateWithFormat:@"aApptKey == %@", selectedClientKey]; // use client key
AppointmentInfo *apptSelected = [AppointmentInfo MR_findAllWithPredicate:predicate inContext:localContext];
if(apptSelected) {
[apptSelected MR_deleteInContext:localContext];
[localContext MR_saveToPersistentStoreAndWait];
}
AppointmentInfoの定義は次のとおりです。
@interface AppointmentInfo : NSManagedObject
@property (nonatomic, retain) NSString * aApptKey;
@property (nonatomic, retain) NSDate * aEndTime;
@property (nonatomic, retain) NSString * aServiceTech;
@property (nonatomic, retain) NSDate * aStartTime;
findAllWithPredicateステートメントで、次のコンパイラ警告が表示されます。
CalendarViewController.m:80:43:「NSArray *__strong」から「NSMutableArray*」に割り当てる互換性のないポインタタイプ
findAllWithPredicateステートメントがNSArrayを返すことを理解しています。ただし、AppointmentInfoであるNSManagedObjectを使用した例を見てきました。 3行目のClientInfoもNSManagedObjectであり、コンパイラの警告はありません。findステートメントから返されたレコードが1つしかないためかもしれないと思いましたが 、1つのレコードでも、複数のレコードでも違いはありません。
コンパイラの警告が原因で実行エラーが発生しますか、それとも他に何か問題がありますか?(私はGoogleとSOを調べましたが、この特定の問題に対処するものは何も見つかりませんでした)。