我正在尝试使用核心数据,并且已经能够存储我的班级“Event.m”的记录。一个事件有一个时间戳和一个音符。
但是当我尝试读取表视图中的所有条目以显示它们时,我看到每个时间戳和注释都是nil(调试)。奇怪的是,我得到的数组具有正确的大小(条目数),并且还创建了表行(只有可见的注释)。
这是我的一些代码:
- (void)fetchRecords {
// Define our table/entity to use
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
// Setup the fetch request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
// Define how we will sort the records
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
// Fetch the records and handle an error
NSError *error;
NSMutableArray *mutableFetchResults = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (!mutableFetchResults) {
NSLog(@"Error fetching data.");
}
// Save our fetched data to an array
[self setEventArray: mutableFetchResults];
NSLog(@"Records found: %i", [eventArray count]);
}
这就是我保存对象的地方:
- (void) saveEntry: (NSString *) note
{
Event *event = (Event *)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:managedObjectContext];
[event setTimeStamp: [NSDate date]];
[event setNote:@"test"];
NSError *error;
if (![managedObjectContext save:&error]) {
NSLog(@"Could not save entry.");
}
NSLog(@"Entry saved.");
[eventArray insertObject:event atIndex:0];
}
请注意,有两种不同的视图,我可以从中访问Core Data。
这就是我在这些观点中获得MOC的地方:
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
managedObjectContext = appDelegate.managedObjectContext;
}
Here I was reading,它可能来自MOC本身。这就是我在SecondViewController.h中保存变量的方法
#import "Event.h"
#import <CoreData/CoreData.h>
#import "AppDelegate.h"
@interface SecondViewController : UITableViewController {
NSManagedObjectContext *managedObjectContext;
NSMutableArray *eventArray;
}
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, strong) NSMutableArray *eventArray;
- (void) fetchRecords;
@end
在我的.m文件中,我有:
@synthesize managedObjectContext, eventArray;
然后我致电fetchRecords
。
为什么我有这个问题?
答案 0 :(得分:0)
我错过了一行代码,关于请求:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
[request setReturnsObjectsAsFaults:NO];
添加最后一行后,我可以访问所有属性。