【发布时间】:2014-07-25 12:28:42
【问题描述】:
我有一个 TableViewController 和一个可以扩展的 UITableViewCell。当它展开时,我想保存使用 UIBarButtonItem 设置的数据,因此此按钮将调用保存方法。我试图将它保存在我的 ViewController 实现文件中,但我总是收到一条错误消息:
'NSInvalidArgumentException', reason: 'Cannot create an NSPersistentStoreCoordinator with a nil model'
我将所有基本代码从另一个项目复制到我的 AppDelegate 实现文件中,该项目只是一个使用核心数据的基本项目。我也制作了我的 xcdatamodeld 文件,其中包含一个警报实体和七个属性。我还为实体创建了一个 NSManagedObject 类。此外,我还有一个 AlarmCell,我在其中设置了 UITableViewCell 属性。
我的 ViewController.m 代码是:
- (IBAction)optionSet:(UIBarButtonItem *)sender
{
if ([_alarmOperation.title isEqual:@"Save"])
{
[self saveTheAlarmFinally];
}
}
BOOL monSet, tueSet, wedSet, thuSet, friSet, satSet, sunSet;
- (void) saveTheAlarmFinally
{
AlarmCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AlarmCell"];
if (cell.mon.tintColor == RGB(0, 204, 102))
{
monSet = YES;
}
else
{
monSet = NO;
}
if (cell.tue.tintColor == RGB(0, 204, 102))
{
tueSet = YES;
}
else
{
tueSet = NO;
}
if (cell.wed.tintColor == RGB(0, 204, 102))
{
wedSet = YES;
}
else
{
wedSet = NO;
}
if (cell.thu.tintColor == RGB(0, 204, 102))
{
thuSet = YES;
}
else
{
thuSet = NO;
}
if (cell.fri.tintColor == RGB(0, 204, 102))
{
friSet = YES;
}
else
{
friSet = NO;
}
if (cell.sat.tintColor == RGB(0, 204, 102))
{
satSet = YES;
}
else
{
satSet = NO;
}
if (cell.sun.tintColor == RGB(0, 204, 102))
{
sunSet = YES;
}
else
{
sunSet = NO;
}
[self createNewAlarmWithMonday:monSet Tuesday:tueSet Wednesday:wedSet Thursday:thuSet Friday:friSet Saturday:satSet Sunday:sunSet];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Alarm"];
NSError *requestError = nil;
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
NSArray *alarms = [[appDelegate managedObjectContext] executeFetchRequest:fetchRequest error:&requestError];
}
- (BOOL) createNewAlarmWithMonday:(BOOL)paramMonday
Tuesday:(BOOL)paramTuesday
Wednesday:(BOOL)paramWednesday
Thursday:(BOOL)paramThursday
Friday:(BOOL)paramFriday
Saturday:(BOOL)paramSaturday
Sunday:(BOOL)paramSunday
{
BOOL result = NO;
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
Alarm *newAlarm = [NSEntityDescription insertNewObjectForEntityForName:@"Alarm" inManagedObjectContext:[appDelegate managedObjectContext]];
if (newAlarm == nil)
{
NSLog(@"Failed to create the new alarm.");
return NO;
}
newAlarm.monday = [NSNumber numberWithBool:paramMonday];
newAlarm.tuesday = [NSNumber numberWithBool:paramTuesday];
newAlarm.wednesday = [NSNumber numberWithBool:paramWednesday];
newAlarm.thursday = [NSNumber numberWithBool:paramThursday];
newAlarm.friday = [NSNumber numberWithBool:paramFriday];
newAlarm.saturday = [NSNumber numberWithBool:paramSaturday];
newAlarm.sunday = [NSNumber numberWithBool:paramSunday];
NSError *savingError = nil;
if ([self.managedObjectContext save:&savingError])
{
return YES;
}
else
{
NSLog(@"Failed to save the new alarm. Error = %@", savingError);
}
return result;
}
【问题讨论】:
标签: ios objective-c xcode uitableview core-data