雑用オブジェクトの新しいインスタンスを Account インスタンスに追加しています。どちらも NSManagedObjects であり、Account から Chore への関係は「1 対多」の関係です。
アカウント インスタンスは、雑用と同じ関係 (1 対多) の規則に従う他のオブジェクトをそれに挿入できるため、実行時に有効です。また、デバッガーではアカウント オブジェクトと newChore の両方が持つように、雑用も有効です。有効なメモリ アドレス。0x6d85cb0 は、このエラー レポートの時点での newChore およびアカウントのアドレスと同じではないため、指定されたアドレスのエラーにのみ問題があります。newChore は 0x06b74a70、アカウントは 0x06d49700 なので、0x6d85cb0 が何を指しているのかわかりません。
これは「[account addChoresObject:newChore];」というコード行です。次のエラーが生成されます。
これはコードの行です [account addChoresObject:newChore]; 次のエラーが発生します。2012-05-31 10:19:05.440 割り当て [61436:fb03] -[__NSCFSet エンティティ]: 認識されないセレクターがインスタンス 0x6d85cb0 に送信されました例外 'NSInvalidArgumentException'、理由: '-[__NSCFSet エンティティ]: 認識されないセレクターがインスタンス 0x6d85cb0 に送信されました'
これは、エラーが生成されるメソッドのコードです。
-(void)addChore:(Chore *)newChore
{
[account addChoresObject:newChore];
NSError *error;
[managedObjectContext save:&error];
if (error != nil) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error Adding chore"
message:@"program not able to add new chore to account"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alert show];
}
}
これは、xcode によって生成されたアカウント クラスのインターフェイスです。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Chore, Gift, Goal, Operation;
@interface Account : NSManagedObject
@property (nonatomic, retain) NSNumber * balance;
@property (nonatomic, retain) NSDate * birthday;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSData * photo;
@property (nonatomic, retain) NSSet *chores;
@property (nonatomic, retain) NSSet *gifts;
@property (nonatomic, retain) NSSet *goals;
@property (nonatomic, retain) NSSet *operations;
@end
@interface Account (CoreDataGeneratedAccessors)
- (void)addChoresObject:(Chore *)value;
- (void)removeChoresObject:(Chore *)value;
- (void)addChores:(NSSet *)values;
- (void)removeChores:(NSSet *)values;
- (void)addGiftsObject:(Gift *)value;
- (void)removeGiftsObject:(Gift *)value;
- (void)addGifts:(NSSet *)values;
- (void)removeGifts:(NSSet *)values;
- (void)addGoalsObject:(Goal *)value;
- (void)removeGoalsObject:(Goal *)value;
- (void)addGoals:(NSSet *)values;
- (void)removeGoals:(NSSet *)values;
- (void)addOperationsObject:(Operation *)value;
- (void)removeOperationsObject:(Operation *)value;
- (void)addOperations:(NSSet *)values;
- (void)removeOperations:(NSSet *)values;
@end
雑用クラスは次のとおりです。
@interface Chore : NSManagedObject
@property (nonatomic, retain) NSString * interval;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * reward;
@property (nonatomic, retain) Account *account;
@end
私には、セレクターが間違ったアドレスに送信されているように見えます。Clean を使用して、潜在的な不良ビルド ファイルを削除しようとしました。生成されたファイルがクラスの名前で呼び出されるのではなく、アプリの名前で呼び出され、一部のソース ファイルで xcode がクラッシュする問題があったため、これまでファイルを正しく生成するのに苦労していました。 ioutlets と ibaction を自動生成しようとしています。他の誰かが xcode に問題を抱えていたのか、それを再インストールすることで問題が解決するのか疑問に思っています。