3

でストーリーボードを作成しUITableViewController、Core Data エンティティを追加しました。この時点で、アプリケーションはエラーなしでビルドおよび実行されましたが、UITableViewControllerデータは表示されませんでした。

TVC を削除して StoryBoard で再構築しましたが、アプリケーションを実行して TVC を開こうとするとエラーが発生して以来、

*キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '+entityForName: nil は、エンティティ名 'Attractions' を検索する有効な NSManagedObjectContext パラメータではありません

少し調べてみると、これは私managedObjectContextが空であることが原因であることがわかりますが、私の人生では、なぜ空であるかを理解することはできません.

TVC ヘッダー ファイル内:

#import <UIKit/UIKit.h>
#import "Attractions.h"
#import "AttractionListViewCell.h"
#import "ApplicationNameAppDelegate.h"

@interface AttractionListViewController : UITableViewController
{
    NSManagedObjectContext *managedObjectContext;
    NSMutableArray *AttractionsArray;    
}

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSMutableArray *AttractionsArray;

- (void) fetchrecords;

@end

TVC モデル ファイル内:

ApplicationNameAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext];

NSLog(managedObjectContext);
// Create connection to the DB via Context
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Attractions" inManagedObjectContext:managedObjectContext];    

ApplicationNameAppDelegate.hファイル内:

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

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

あなたが提供できる助けや洞察は大歓迎です。

編集 - AppDelegate 情報を追加しました:

#import <UIKit/UIKit.h>
#import "AttractionListViewController.h"
#import <CoreData/CoreData.h>

@class AttractionListViewController;

@interface AppNameAppDelegate : UIResponder <UIApplicationDelegate>
{
    NSManagedObjectModel *managedObjectModel;
    NSManagedObjectContext *managedObjectContext;
    NSPersistentStoreCoordinator *persistentStoreCoordinator;
}

@property (strong, nonatomic) AttractionListViewController *viewController;
@property (strong, nonatomic) UIWindow *window;

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

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

@end
4

3 に答える 3

1

この行:

NSManagedObjectContext *managedObjectContext = [appDelegate managedObjectContext];

ローカルのmanagedObjectContextを宣言し、何をすべきかではなく、それを割り当てています。

managedObjectContext = [appDelegate managedObjectContext];

TVCのiVarを使用します

于 2012-11-04T10:53:01.617 に答える
0

だから私は問題が何であるかを見つけました。xcodeで生成された例では、AppDelegateからすべてのクラスをコピーしていなかったため、managedObjectや永続ストアなどを定義するクラスはありませんでした。

于 2012-11-20T16:40:50.060 に答える