Core data 核心数据输入提取到标签中
我想存储文本字段中的数据。然后使用此数据填充视图控制器内标签中的文本。这可能吗?我把它弄得一团糟,但似乎什么都不管用。有什么想法吗?以下是我的两种方法Core data 核心数据输入提取到标签中,core-data,Core Data,我想存储文本字段中的数据。然后使用此数据填充视图控制器内标签中的文本。这可能吗?我把它弄得一团糟,但似乎什么都不管用。有什么想法吗?以下是我的两种方法 - (IBAction)saveButton:(id)sender { CoreDataStack *coreDataStack = [CoreDataStack defaultStack]; NSManagedObject *noteEntry = [NSEntityDescription insertNewObjectForEntityFor
- (IBAction)saveButton:(id)sender {
CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
NSManagedObject *noteEntry = [NSEntityDescription insertNewObjectForEntityForName:@"Notes" inManagedObjectContext:coreDataStack.managedObjectContext];
[noteEntry setValue:_notesField.text forKey:@"notes"];
NSError *error = nil;
// Save the object to persistent store
if (![coreDataStack.managedObjectContext save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[coreDataStack saveContext];
}
以下是我的视图加载方法:
- (void)viewDidLoad
{
[super viewDidLoad];
CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Notes"];
Notes *entry = [NSEntityDescription insertNewObjectForEntityForName:@"Notes" inManagedObjectContext:coreDataStack.managedObjectContext];
_outputLabel.text = entry.notes;
}
saveButton:
方法中的代码似乎正常。但是viewDidLoad
方法中的代码似乎是错误的。您是否正在尝试执行以下操作
- (void)viewDidLoad {
[super viewDidLoad];
CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
//First way to init your fetchRequest:
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Notes"];
//Second way to init your fetchRequest:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Notes" inManagedObjectContext:coreDataStack];
[fetchRequest setEntity:entity];
//Having a NSEntityDescription object can be usefull if you need to group your data, for example
//Set some predicates, if necessary
//Set some sortdescriptors, if necessary
NSError *error;
NSArray *resultsArray = [coreDataStack executeFetchRequest:request error:&error];
NSLog(@"%@", resultsArray);
_outputLabel.text = [[resultsArray firstObject] notes]; //if your array can only have one object
}
NSLog将为您提供获取数组的结构(我猜不出来)。然后,您将能够设置
\u outputLabel.text
@user1966109给出的答案正是您想要的答案。由于需要在标签中显示文本,因此需要设置谓词以获取单行。如下所示设置谓词
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"value == abc"];//considerin abc is the word you are looking for.
request.predicate = predicate;
//then execute the query.
看来我漏掉了NSArray。在我的数据模型中,我有一个实体Notes,还有一个属性note。我需要调用[request setEntity:@“Notes:”,然后设置排序描述符,还是跳过[request setEntity]直接转到排序描述符和resultsArray?另外,我是否设置了带有resultsArray索引的_outputLabel.text?请参见我的编辑。我倾向于使用第一种方法初始化简单的fetchRequests,但人们似乎更喜欢第二种方法。对于某些请求,您将需要NSEntityDescription。这当然是可能的。什么不是呢从您的问题中可以清楚地看出,您打算如何获取托管对象。CoreData获取请求并不打算获取单个特定对象。它们匹配存储中与给定条件匹配的所有对象。这就是为什么通常使用core data使用NSFetchedResultsController填充列表视图,并让用户选择parti使用该模型对象(ala主细节模板)。@quellish获取单个对象的最佳方法是什么?我想要一个持久性存储。我想我刚刚计算了核心数据。你考虑过UIDocument吗?我会研究一下……谢谢!