ios - 无法将我的 managedObjectContext 从我的 View 连接到我的委托(delegate)

标签 ios core-data nsmanagedobjectcontext

我在我的应用程序上使用核心数据,我知道我需要连接我的 managedObjectContext 抛出委托(delegate),但我不知道如何... 我有一个代表-

AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

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


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

@end

AppDelegate.m:

#import "AppDelegate.h"
#import "mainViewController.h"
#import "addViewController.h"

@implementation AppDelegate

@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
@synthesize nav;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    //----------------------------------nav-------------------------------------------------
    mainViewController*mainView=[[mainViewController alloc]init];
    nav=[[UINavigationController alloc]initWithRootViewController:mainView];
    mainView.manageObjectContext=self.managedObjectContext;
    [self.window addSubview:nav.view];
    //----------------------------------nav-end---------------------------------------------
    [self.window makeKeyAndVisible];
    return YES;

}

MainVeiw 不是我要在其中保存实体的页面(因此我无法匹配委托(delegate)本身的对象),那是另一个页面,我认为我的问题是我不知道如何导入委托(delegate) ID对象,以便我可以将 managedObjectContext 与我的委托(delegate)中的对象进行比较。

addViewController.h:

    #import <UIKit/UIKit.h>


@interface addViewController : UIViewController  <UIPickerViewAccessibilityDelegate,UIPickerViewDataSource,UITextFieldDelegate>
{
    NSDictionary *allSubjects;
    NSArray* arrSubject;
    NSArray* arrSubSubjects;
    NSManagedObjectContext*manageObjectContext;
}
@property(nonatomic,strong)NSManagedObjectContext*manageObjectContext;
//@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
//@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

@property (strong, nonatomic) NSDictionary *allSubjects;
@property (strong, nonatomic) NSArray* arrSubject;
@property (strong, nonatomic) NSArray* arrSubSubjects;

@property (weak, nonatomic) IBOutlet UIScrollView *scrolladdview;
@property (weak, nonatomic) IBOutlet UIPickerView *pickerSubjects;
@property (weak, nonatomic) IBOutlet UITextField *txtDesc;
@property (weak, nonatomic) IBOutlet UITextField *txtUserName;
@property (weak, nonatomic) IBOutlet UITextField *txtPassword;

-(IBAction)createPassword:(id)sender;


@end

addViewController.m

#import "addViewController.h"


@interface addViewController ()

@end

@implementation addViewController
@synthesize allSubjects,arrSubject,arrSubSubjects,pickerSubjects;
@synthesize txtDesc,txtPassword,txtUserName,scrolladdview,manageObjectContext;



-(IBAction)createPassword:(id)sender
{
    NSInteger row;
    NSString*subTypeSelectd=[[NSString alloc]init];

    row = [pickerSubjects selectedRowInComponent:0];
    subTypeSelectd = [arrSubSubjects objectAtIndex:row];

    NSInteger row2;
    NSString*TypeSelectd=[[NSString alloc]init];

    row2 = [pickerSubjects selectedRowInComponent:1];
    TypeSelectd = [arrSubSubjects objectAtIndex:row2];


//here is the error: no visible @interface for 'addViewController' declares the selector 'NSManagedObject' 
    NSManagedObject*password=[NSEntityDescription insertNewObjectForEntityForName:@"Password" inManagedObjectContext:[self managedObjectContext]];


    [password setValue:self.txtDesc.text forKey:@"desc"];
    [password setValue:self.txtUserName.text forKey:@"userName"];
    [password setValue:self.txtPassword.text forKey:@"password"];
    [password setValue:subTypeSelectd forKey:@"subType"];
    [password setValue:TypeSelectd forKey:@"type"];

    NSError*error;
    if(![[self manageObjectContext]save:&error])
        NSLog(@"input %@",error);
    else NSLog(@"saved");

    [self.navigationController popViewControllerAnimated:YES];

}

我会喜欢一些帮助!!!

最佳答案

您可以从 AppDelegate 本身获取它:

#import "AppDelegate.h"

//...

-(IBAction)createPassword:(id)sender
{
//...
NSManagedObjectContext* context = ((AppDelegate*)[[UIApplication sharedApplication] delegate]). managedObjectContext;
//...
}

关于ios - 无法将我的 managedObjectContext 从我的 View 连接到我的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16186838/

相关文章:

ios - 使用 UIImage 滚动时 TableView 单元格滞后

swift - MagicalRecord 的 MR_InContext 方法。使用安全吗?

ios - 访问 ManagedObjectContext

swift - 如何初始化一个新的 NSManagedObject 并在单个托管对象上下文中设置与另一个 NSManagedObject 的关系?

ios - 从 VC 展开到 TabBarController 并更改选项卡索引

iOS .mobi 网站呈现问题

iphone - 如何从 iOS 连接到 Web 服务(SOAP + DES)?

与 iCloud 连接的 iOS 应用程序崩溃

ios - Core Data轻量级迁移重命名属性一直在重命名id?

ios - 已插入但尚未保存的 NSManagedObject?