1

親と子のみのプロジェクトでcoredataを使用しました[1対多]、cdはNSManagedObjectのentity.hとentity.mを生成します[OK]問題は、以前のプロジェクトで、addCategToEntityObject私のentityMotherで。彼の

- (void)addCategToEntityObject:(NSManagedObject *)value;

そしてそれはうまく動作します、

しかし、私の新しいプロジェクトでは、entityMother.h の CoreDataGeneratedAccessors は

- (void)addTo_InterestObject:(Interest *)value;

だから私は一種の同じアプローチを使用して保存しますが、警告が表示され、実行時にコースから外れてクラッシュします! 【しかし、それを修正する方法!】

警告: 互換性のない Objective-C 型 'struct NSManagedObject *', 異なる Objective-C 型から 'addTo_InterestsObject' の引数 1 を渡すときに 'struct Interest *' が必要です

ここで問題を保存するためのアクション: -(IBAction) saveInterest: (id) sender{

NSManagedObject *newItem;

NSManagedObjectContext *contextCateg_ = [categ_ managedObjectContext];


NSLog(@"el contexto :%@",contextCateg);

newItem = [NSEntityDescription insertNewObjectForEntityForName:@"Interest" inManagedObjectContext:contextCateg_];


[categ_ addTo_InterestObject:interest_]; //vooddoo! un mensaje del mas alla!



//OJO, COREDATA ME GENERA UN   - (void)addTo_InterestObject:(Interest *)value;
// EN LUGAR De NSManagedObject, 


[newItem setValue:item_new.text forKey:@"interest"];

NSError *error;
[context save:&error];
NSLog(@"ITEM saved");

.h で

#import <UIKit/UIKit.h>


 @class Categories, Interest;

 @class EventMAppDelegate;
 @class editContactViewController; 


  @interface BackEndViewController : UIViewController <UITableViewDelegate,   UITableViewDataSource, NSFetchedResultsControllerDelegate> {

Categories *categ_; //objetos de los Entities
    Interest *interest_;

NSManagedObjectContext *contextCateg;
4

1 に答える 1

1

この問題は、最初のモデルでは、Categエンティティに指定されたNSManagedObjectサブクラス名が定義されていなかったため、コードジェネレーターが汎用のNSManagedObject値タイプをメソッドパラメーターに割り当てたために発生します。

ただし、2番目のモデルでは、InterestエンティティにNSManagedObjectサブクラス名がInterest定義されているため、コードジェネレーターInterestはメソッドパラメーターにタイプを割り当てます。

定義されているように、クラスのオブジェクトをメソッドに渡す必要がありますInterest。これを行わない場合は、データモデルからクラス名を削除し、コードを再生成して汎用NSManagedObjectを受け入れる必要があります。

于 2011-07-13T16:43:43.093 に答える