- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在使用 Core Data 时遇到了一个非常奇怪的问题。让我们来描述一下:
假设我有两个模型,ModelA
和 ModelB
。在数据模型中,ModelA
引用了 ModelB
作为一对多关联,因此 ModelB
具有一对一关联与 ModelA
的关联。
当应用程序启动时(尤其是首次启动时),或者当用户要求时,我必须为每个 ModelA
实例创建或更新所有 ModelB
实例。 ModelA
实例是预先确定的。对于每个 ModelA
实例,我有大约 200 个 ModelB
实例。
我使用这样的代码:
ModelB *model = [NSEntityDescription insertNewObjectForEntityForName:@"ModelB"
inManagedObjectContext:context];
model.value = [NSNumber numberWithDouble:myValue];
model.modelA = modelA; // I pass modelA as a parameter to the function
[modelA addModelBObject:model];
我不会立即保存数据(因为我有很多数据要保存),但我会在流程结束时保存。
有时,也只是有时,我会在这一行收到 EXC_BAD_ACCESS
错误:
model.value = [NSNumber numberWithDouble:myValue];
启用僵尸,除了那个愚蠢的EXC_BAD_ACCESS
,我什么也看不到,没有更多信息。
我尝试以不同的方式设置该值,但没有任何改变。然后,我尝试保留
NSNumber
,但没有任何改变。然后,最后,我尝试保留
创建后的模型,我得到了通常的EXC_BAD_ACCESS
,但对应于模型的创建,也就是说这里:
ModelB *model = [[NSEntityDescription insertNewObjectForEntityForName:@"ModelB"
inManagedObjectContext:context] retain];
您对如何解决这个问题有什么想法吗?难道我做错了什么?顺便说一句,如果我放慢速度(例如,每次创建新模型时都保存上下文),这个问题显然不会发生,但这确实减慢了整个应用程序...
在极少数情况下,我得到了这个堆栈跟踪:
Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)
2011-06-15 11:36:59.864 myApp[457:607] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
*** Call stack at first throw:
(
0 CoreFoundation 0x313dc64f __exceptionPreprocess + 114
1 libobjc.A.dylib 0x34b3dc5d objc_exception_throw + 24
2 CoreFoundation 0x313dc491 +[NSException raise:format:arguments:] + 68
3 CoreFoundation 0x313dc4cb +[NSException raise:format:] + 34
4 CoreFoundation 0x31351089 -[__NSCFSet addObject:] + 152
5 CoreData 0x35136dd9 -[NSManagedObjectContext(_NSInternalChangeProcessing) _processPendingUpdates:] + 524
6 CoreData 0x350f4b3d -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:] + 724
7 CoreData 0x351363a5 -[NSManagedObjectContext processPendingChanges] + 16
8 CoreData 0x350d027f _performRunLoopAction + 126
9 CoreFoundation 0x313b3a35 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 16
10 CoreFoundation 0x313b5465 __CFRunLoopDoObservers + 412
11 CoreFoundation 0x313b675b __CFRunLoopRun + 854
12 CoreFoundation 0x31346ec3 CFRunLoopRunSpecific + 230
13 CoreFoundation 0x31346dcb CFRunLoopRunInMode + 58
14 GraphicsServices 0x3658841f GSEventRunModal + 114
15 GraphicsServices 0x365884cb GSEventRun + 62
16 UIKit 0x368ded69 -[UIApplication _run] + 404
17 UIKit 0x368dc807 UIApplicationMain + 670
18 myApp 0x000028cf main + 82
19 myApp 0x00002878 start + 40
)
terminate called after throwing an instance of 'NSException'
这是异常的堆栈跟踪:
#0 0x313f1460 in __CFBasicHashAddValue ()
#1 0x3133fff8 in CFBasicHashAddValue ()
#2 0x31344162 in CFSetAddValue ()
#3 0x31351012 in -[__NSCFSet addObject:] ()
#4 0x3514211a in _PFFastMOCObjectWillChange ()
#5 0x3512ed46 in _PF_ManagedObject_WillChangeValueForKeyIndex ()
#6 0x35132e7e in _sharedIMPL_setvfk_core ()
#7 0x3513316a in _svfk_2 ()
#8 0x0003b750 in -[_TassoStorico setValoreValue:] (self=0x6d97bf0, _cmd=0x49064, value_=1.02600002) at _TassoStorico.m:87
#9 0x0001b62e in -[EuriborParser(hidden) readStoricoForzato] (self=0x74200d0, _cmd=0x48ff7) at EuriborParser.m:236
#10 0x31349f02 in -[NSObject(NSObject) performSelector:withObject:] ()
#11 0x000441c4 in -[MBProgressHUD launchExecution] (self=0x90a6ff0, _cmd=0x4b83f) at MBProgressHUD.m:482
#12 0x352b3388 in -[NSThread main] ()
#13 0x353255cc in __NSThread__main__ ()
#14 0x34e20310 in _pthread_start ()
#15 0x34e21bbc in thread_start ()
最佳答案
CoreData 不是线程安全的;看起来这是你的问题,请尝试查看此 SO question
关于objective-c - 核心数据 : solve a strange EXC_BAD_ACCESS error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6355126/
我遇到了一些应用程序崩溃的问题,我需要一些指导才能修复它。我有一个带有主视图和模态视图的应用程序,非常类似于默认的翻转实用模板。当我第一次运行该应用程序时,一切都运行良好,包括模态视图。但是,当我返回
UPDATE: I updated the correction of my definition of Realm, I still get the error. I'm using Swi
我正在尝试用带有c的sqlite3创建一个CGI可执行文件。但我收到错误exc_badd_access,我不知道问题出在哪里。我的代码是:。main.c。sqlite.h。Sqlite.c。Confi
我正在尝试用带有c的sqlite3创建一个CGI可执行文件。但我收到错误exc_badd_access,我不知道问题出在哪里。我的代码是:。Main.c。sqlite.h。Sqlite.c。Confi
我正在尝试暂停 AVAudioPlayer如果当前正在播放。当我调试我的代码并检查时 AVAudioPlayer ,我看是分配的。当我尝试访问它的方法/属性(即 myAudioPlayer isPla
我正在使用 xcode 用 C 语言编写这个简单的程序。 #include int main() { double A[200][200][2][1][2][2]; int B[2
这是我得到的错误 Thread 1:EXC_BAD_ACCESS (code=2, address=0xb7ffffc) 在这条线上 [[NSNotificationCenter defaultCen
我的 iPhone 应用程序出现问题,出现 EXC_BAD_ACCESS,出现一些内存泄漏,但这些问题现已修复,所以我不确定发生了什么。我意识到我没有提供很多信息,但我真的不知道发生了什么。 打开初始
//adds a button to scroll list -(void) addNode:(NSString *) atitle{ UIButton *btn = [UIButton
我几乎完成了我的第一个应用程序,但我遇到了一个奇怪的 EXC_BAD_ACCESS,这种情况几乎一直在发生。 这是跟踪: #0 0x02adba93 in objc_msgSend #1 0x0702
我一直在研究核心数据,并开始编写一些方法来查询不同日期范围的数据。我的核心数据模型非常简单(名为 Smoke 的实体,具有一个字段 - 时间戳(日期类型)。 当我执行代码时,会返回正确的计数,但出现自
我有以下代码: ABAddressBookRef ab; ab = ABAddressBookCreate(); int len = (int) ABAddressBookGetPersonCount
希望有人可以帮助我调试这个问题,因为 EXC_BAD_ACCESS 是我收到的唯一错误。我也尝试过打开 NSZombieEnabled,但据我所知,没有获得更多信息。 问题。我有四个实体: A ->
我正在 tableView 上加载自定义单元格,并在 tableView 中返回 50 行。一些行数显示在表格 View 中,但是当滚动表格 View 时,我的自定义单元格不显示,并且出现错误 "EX
我正在尝试使用 NSLog 来打印控制台消息。问题是有时我在调用它时收到“EXC_BAD_ACCESS”错误 -(void)willRotateToInterfaceOrientation:(UIIn
这是我使用音频队列生成噪音的代码: http://pastebin.com/Kn8GU72J 问题是我的代码生成了 EXC_BAD_ACCESS。问题似乎出在作业中 MAAudioManage
我正在开发适用于 iOS 的 OpenGL ES 2 应用程序。今天早上(没有更改任何代码)我开始从 sgxTextureGetImageRowBytes 抛出 EXC_BAD_ACCESS。 #0
我在这里完全迷路了。 我的应用程序中有Google Analytics(分析),可查看有多少用户从UITableView进入detailview 我在viewDidLoad方法中添加了Google A
我是 Cocoa 新手,正在编写一个简单的应用程序来学习使用 Core Data,但它因 EXC_BAD_ACCESS 而崩溃。尝试了几种方法,但尚未找到解决方案。正如我所说,我对 Cocoa 的经验
以下代码使应用程序崩溃,我不知道为什么。它不规则地崩溃,这意味着有时单击一行时 ImageView 可以显示 30 次,有时当我选择一行时它会第二次崩溃。 仅供引用:事件指示器、操作表和变量 imag
我是一名优秀的程序员,十分优秀!