[objective-c]core data字符串

发布时间: 2017/3/27 3:36:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我新到使用core data和有非常基本的问题。我想要用户输入的字符串,然后可以保存该字符串,并允许它要返回到他们在一些点。但我似乎无法得到它的保存。事实上该程序退出时我尝试运行下面的方法。我可以发布其余的我的项目,但我认为也许这将是恼人的所以让我知道是否更详细地看到它就会帮。谢谢你这么多。

詹姆斯 ·

。 h︰ 文件

#import <UIKit/UIKit.h>
#import "People.h"

@class rootViewController;

@interface data : UIView <UITextFieldDelegate>{
    rootViewController *viewController;
    UITextField *firstName;
    UITextField *lastName;
    UITextField *phone;
    UIButton *saveButton;
    NSMutableDictionary *savedData;

    //Used for Core Data.
    NSManagedObjectContext *managedObjectContext;
    NSMutableArray *peopleArray;
}

@property (nonatomic, assign) rootViewController *viewController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSMutableArray *eventArray;


- (id)initWithFrame:(CGRect)frame viewController:(rootViewController *)aController;
- (void)setUpTextFields;
- (void)saveAndReturn:(id)sender; 
- (void)fetchRecords;

@end

.m 文件︰

-(void)saveAndReturn:(id)sender{


    People *userEnteredName = (People *)[NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:managedObjectContext];
    [userEnteredName setName:firstName.text];

    //NSError *error;
    //if (![managedObjectContext save:&error]) {
        // This is a serious error saying the record could not be saved.
        // Advise the user to restart the application
    //}

    [peopleArray insertObject:userEnteredName atIndex:0];
}

解决方法 1:

从你给你的错误必须具有已命名人对象以不同的方式-在模型中你使用"人"(那些可以是相同的) 的类和实体名称吗?

编辑︰

检查您的代码以后, 你有多个问题︰

1) 在应用程序委托你做"[数据分配]"但没有初始化。 在哪里您设置托管的对象的上下文,但它从来没有用......不只是因为缺乏 init 但因为......

2) 的数据控制器是真的建和从使用的地方是 rootViewController。 这就是那个其实做好各项工作,一个在应用程序委托被弃之不用。

3) 所以在哪里,然后获取上下文? 老实说的最好的地方是在数据控制器,一个修补程序,我知道工作把此行之前每次上下文被访问︰

#import "UserProfileAppDelegate.h"

// Then in the method before the use of context........

self.managedObjectContext = [((UserProfileAppDelegate *)[[UIApplication sharedApplication] delegate]) managedObjectContext];

那时候到位,项目就跑了。 我认为虽然你应该将它放入数据控制器上的 viewDidLoad 类似,(如果它有一个视图,使用过)。

赞助商