我想从AppDelegate获取托管对象上下文,但是在我将两行代码放入方法之后应用程序崩溃了,即使我没有做任何其他事情,并且调试区域中有一条消息:&#34 ; CoreData:无法加载NSManagedObjectModel。 nil是非法的URL参数......"
我的方法中添加的代码:
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
NSManagedObjectContext *managedObjectContext = delegate.managedObjectContext;
AppDelegate中的-managedObjectModel方法:
- (NSManagedObjectModel *)managedObjectModel {
// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FoodPin" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
和-managedObjectContext方法:
- (NSManagedObjectContext *)managedObjectContext {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.)
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (!coordinator) {
return nil;
}
_managedObjectContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
return _managedObjectContext;
}
" FoodPin"是我的项目名称。那么这里有什么问题?我是iPhone编程的新手(尤其是核心数据)。
任何人都可以帮助我吗?
...谢谢
答案 0 :(得分:24)
问题在于这一行:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FoodPin" withExtension:@"momd"];
modelURL
为nil
,表示系统无法找到资源FoodPin.momd
。
确保您的项目中有一个名为FoodPin
的核心数据模型。它将在Project Navigator中显示为FoodPin.xcdatamodeld
。
答案 1 :(得分:3)
我有同样的问题,但对我来说,modelURL设置正确。问题是我的* .xcdatamodeld文件不再出现在Copy bundle ressources中了。我不知道为什么它会消失但是再次添加就可以解决问题。
以下是修复方法: 你投射>构建阶段>复制捆绑资源> " +"按钮并选择你xcdatamodeld文件
答案 2 :(得分:1)
尝试用“妈妈”代替“妈妈”
NSURL * modelURL = [[NSBundle mainBundle] URLForResource:@“ name” withExtension:@“ mom”];
答案 3 :(得分:0)
NSURL * modelURL = [[NSBundle mainBundle] URLForResource:@“XYZ”withExtension:@“momd”];
确保您的数据模型名称与URLForResource:XYZ匹配。
答案 4 :(得分:0)
好的,这就是我要做的。我已将iOS版本还原到9.x,以便在我拥有的旧iPad上运行。这会导致错误,因为捆绑包中的先前版本必须区分大小写。
答案 5 :(得分:-1)
我有同样的错误。
// ValueChanged for Slider
private void TimeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
Dispatcher.Invoke(() => {
TimeSpan videoPosition = TimeSpan.FromSeconds(TimeSlider.Value);
VideoPlayer.Position = videoPosition;
TimeLabel.Content = Utilities.numberSecondsToString((int)VideoPlayer.Position.TotalSeconds, true, true) + " / " + _durationString;
});
}
// DragStarted event
private void slider_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
{
Dispatcher.Invoke(() => {
VideoPlayer.ScrubbingEnabled = true;
VideoPlayer.Pause();
});
}
// DragCompleted event
private void slider_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
Dispatcher.Invoke(() => {
VideoPlayer.ScrubbingEnabled = false;
TimeSpan videoPosition = TimeSpan.FromSeconds(TimeSlider.Value);
VideoPlayer.Position = videoPosition;
if (_isPlaying) // if was playing when drag started, resume playing
VideoPlayer.Play();
else
VideoPlayer.Pause();
});
}
&#34; N&#34;在名字中必须是&#34; N&#34;:就像对象中的其他一切一样,这位母亲是区分大小写的。