3

私のアプリは数か月間開発されており、コア データを追加するよう求められています。SMH。tabViewController アプリです。それが答えに役立つかどうかはわかりません。

だからここで私はそれを追加しようとしていますが、エラーが発生しています。AppDelegate.hで Core Data 用にビルドするため、これらの IVAR を作成し、後で .m で適切にビルドしました。

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

CoreData の相互作用が必要な viewController では、(.h ファイルで) それらを指定しました。

@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;

それらを.mで合成しました:

@synthesize fetchedResultsController = __fetchedResultsController;
@synthesize managedObjectContext = __managedObjectContext;

さて、AppDelegateに戻ります。.m で、managedObjectContext のポインターをデリゲートからビューに渡そうとすると (そのように):

viewController1.managedObjectContext = self.managedObjectContext;
viewController2.managedObjectContext = self.managedObjectContext;

(viewController1 と 2 の両方で) 次の XCode エラーが表示されます。

Property 'managedObjectContext' not found on object of type 'UIViewController *'

両方のView Controllerのプロパティが明確に存在し、合成されているため、これはわかりません。

XCodeを終了して再起動することさえ試みました。多分システムの再起動?<--それはばかげていますか??

(必要以上に追加したことはわかっています..)何か助けはありますか?

4

2 に答える 2

0

まず、アプリが既にwithoutCoreData を作成している場合は、UIManagedDocument を使用してコア データを設定する方が簡単です。

したがって、AppDelegate で最初にこれを行います。Apple 開発者の Web サイトにある UIManagedDocument クラスのリファレンスと、こちらの回答を参照してください。

目標 c - コア データ節約アプローチ

次に、appDelegate は、実際にはあなたの最初のビュー コントローラーをUITabBarController認識し、タブ バー コントローラーは、コンテキストのターゲットとなる最初のビュー コントローラーを認識する必要があるためNSManagedObejectContext、パブリック API にプロパティが必要です。

正確なコードは忘れましたが、次のようなものです。

// in appDidFinishLaunchingWithOptions or somewhere
UITabBarController* tabBarController = self.window.rootViewController;
UIViewController* viewController = [tabBarController.viewControllers objectAtIndex:[your first controller]];

// Pass your context
viewController.managedObjectContext = self.managedObjectContext;

// Be sure to #import your first viewControllers API so that propert is visible.
// That may have been your initial problem.

これがお役に立てば幸いです!

于 2012-06-14T19:54:50.390 に答える