0

我正在尝试使用核心数据,并且已经能够存储我的类“Event.m”的记录。一个事件有一个时间戳和一个注释。

但是当我尝试读取表格视图中的所有条目以显示它们时,我看到每个时间戳和注释都是零(调试)。奇怪的是,我得到的数组具有正确的大小(条目数),并且还创建了表行(只有没有可见的注释)。

这是我的一些代码:

- (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;

}

我在这里阅读,它可能来自 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

任何想法为什么我有这个问题?

4

1 回答 1

0

关于请求,我缺少一行代码:

   NSFetchRequest *request = [[NSFetchRequest alloc] init];
   [request setEntity:entity];
   [request setReturnsObjectsAsFaults:NO];

添加最后一行后,我能够访问所有属性。

于 2013-09-08T14:09:52.363 回答