- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在尝试在我的应用程序中实现 CoreData 以存储小型数据库。
这里是我的实现:
AppDelegate.h
#import <UIKit/UIKit.h>
#import "FavoritosViewController.h"
#import <CoreData/CoreData.h>
@interface XXX : NSObject <UIApplicationDelegate>{
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
}
- (NSString *)applicationDocumentsDirectory;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@end
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
FavoritosViewController *global=[[FavoritosViewController alloc]init];
global.managedObjectContext=[self managedObjectContext];
.
.
.
}
- (void)applicationWillTerminate:(UIApplication *)application
{
NSError *error = nil;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
- (NSManagedObjectContext *) managedObjectContext {
if (managedObjectContext != nil) {
return managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return managedObjectContext;
}
/**
Returns the managed object model for the application.
If the model doesn't already exist, it is created by merging all of the models found in the application bundle.
*/
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
return managedObjectModel;
}
/**
Returns the persistent store coordinator for the application.
If the coordinator doesn't already exist, it is created and the application's store added to it.
*/
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"FavoritosDatabase.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
Typical reasons for an error here include:
* The persistent store is not accessible
* The schema for the persistent store is incompatible with current managed object model
Check the error message to determine what the actual problem was.
*/
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator;
}
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
我还有一个带有“事件”实体的 xcdatamodeld 及其属性,以及来自它的 Event.h、Event.m。
在 FavoritosViewController 中我也有所有的方法,但问题先于此。
它出现在
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
应用程序崩溃并显示如下:
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
有什么想法吗???谢谢!!!
最佳答案
当我的代码运行 [NSManagedObjectModel mergedModelFromBundles:nil] 时,我遇到了类似的问题和相同的错误消息。这是在 xCode 意外崩溃后发生的。即使当我恢复到我的代码的已知良好版本时,我仍然有同样的错误,这是由于某种损坏造成的。
经过多次试验,我能够通过退出 Xcode 和 iPhone 模拟器,然后删除以下目录中的所有文件来解决问题:
$ cd /Users/john/Library/Developer/Xcode/DerivedData
$ rm -R -f ./(folder corresponding to my project name)
$ cd /Users/john/Library/Application Support/iPhone Simulator/5.0/Applications
$ rm -R *
这能够清除损坏的临时文件和模拟器的状态,并且错误消失了。
关于iphone - 核心数据崩溃 : [__NSArrayM insertObject:atIndex:]: object cannot be nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966149/
我有一个包含对象和键的 NSDictionary。 key 包含名称和编号。我想使用 insertObject: atIndex: 将这些对象插入到 NSMutableArray 中。对象是名称,数字
我正在尝试使用 ARC 将对象添加到 lion、xcode 4.3 中的 nsmutable 数组。以下导致程序因 SIGABRT 而崩溃 NSMutableArray *myArray = [NS
我在项目中使用了 4 个图像..运行时结果: * Terminating app due to uncaught exception 'NSInvalidArgumentException', rea
我在 iOS6 上(在带有 CoreData 的应用程序上)出现以下异常: "2012-10-15 10:21:28.952 MyApp[68650:c07] * 由于未捕获的异常 'NSInvali
-[NSArray insertObject:atIndex:] -- N 的复杂度是多少?还是常数? 另外,如何找出各种 Objective-C 语句的复杂度? 最佳答案 有一个discussion
使用方法: JFactory::getDbo()->insertObject('#__card_bonus', $object); 有重复 key 更新吗? 最佳答案 您有几个选择: 1) 检查实体
我在设备上而不是在iOS模拟器上测试应用程序时, [__NSArrayM insertObject:atIndex:]:对象不能为崩溃。 这是怎么回事: 我在一个View Controller上管理5
我是 Objective-C 编程的新手,很抱歉提出这个蹩脚的问题。 我正在尝试编写一些简单的应用程序,将存储在 NSMutableArray 中的单个数字添加到 TableView 中。 这是初始化
我正在为 iPad 开发幻灯片创建应用程序,当我让用户重新排列幻灯片时遇到了一些麻烦。当调用 slideDropped 方法时,如果我只是删除幻灯片然后将其添加到幻灯片放映的末尾,那么一切正常。如果我
我有一个 NSMutable 数组,用于存储一些初始数字。我想要做的是能够查看数字,并且在某些情况下,删除该项目并用另外两个替换它。 我的插入/替换代码似乎在索引 > 0 时有效,但是,当我尝试插入对
我得到错误对象不能为零。我正在使用 Web 服务,当我使用循环解析它时它崩溃并发送输出 -[__NSArrayM insertObject:atIndex:]: object cannot be ni
我有一个NSMUtableArray我想在不同的索引和不同的方法中插入一些数据。所以我初始化我的 NSMutableArray在我的viewDidLoad像这样: - (void)viewDidLoa
我有一个关于使用 KVO 兼容方法从数组中插入/删除对象的问题。我正在阅读 Aaron Hillegass 的 Mac OS X Cocoa 编程,我看到了以下代码行(在 insertObject:i
所以我有一个多维的NSMutableArray。第一个数组保存的信息包括用户名,密码,名字,姓氏和电子邮件地址。 NSMutableArray *newUser = [[NSMutableArray
这让我发疯! 我看到了: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visi
我正在与我的应用程序崩溃作斗争,但我找不到它发生的位置。我正在使用最新版本的 MZFormSheetController .当我收到一个远程推送时,我展示了一个基本的 MZFormSheetContr
在 iOS9 中,我的应用程序 SWPi 在 main.m 中崩溃: #import int main(int argc, char *argv[]) { NSAutorel
我的团队有一个项目,我们正在通过在 bitbucket.org 上推送/pull 它来更新我们的代码。我们最近遇到了一个问题,我们无法打开 pull 的更新项目代码的 Storyboard。错误是这样
我正在尝试在我的应用程序中实现 CoreData 以存储小型数据库。 这里是我的实现: AppDelegate.h #import #import "FavoritosViewController.
我是一名优秀的程序员,十分优秀!