我目前正在使用Core Data编写Iphone应用程序,并且EXC_BAD_ACCESS
在[managedObjectContext save:&& error]代码行中出现错误.只有在修改某些字段后才会发生此崩溃.更具体地说,我的实体有两个字符串字段(大约10个字段中的字段),它们从模式视图控制器(如文本编辑器)的返回中获取它们的值.崩溃也只发生在编辑这些字段之后,第一次将值放入其中工作正常.
我有格式构造函数字符串只有字符串的原因是因为我试图复制构造...不确定是否自动发生?想到可能会保留/释放来自那些字符串的消息(这两个来自模态视图控制器),在解雇模态视图控制器或其他东西时被释放.但不要猜测,因为它仍然不起作用.
这是崩溃的代码部分:
[EDITED]
- (void)actionSheet:(UIActionSheet *)modalView clickedButtonAtIndex: (NSInteger)buttonIndex
switch(buttonIndex) {
case 0: {
if(message == nil) {
message = [NSEntityDescription insertNewObjectForEntityForName:@"MailMessage" inManagedObjectContext:self.managedObjectContext];
}
message.toString = txtTo.text;
message.fromString = txtFrom.text;
message.subjectString = txtSubject.text;
message.backgroundColor = [NSNumber numberWithInt:[bgColor intValue]];
message.textArray = [NSString stringWithFormat:@"%@", stringTextArray];
message.htmlString = [NSString stringWithFormat:@"%@", stringHTML];
message.timeStamp = [NSDate date];
message.statusCode = [NSNumber numberWithInt:0];
NSError *error = nil;
if (![message.managedObjectContext save:&error]) {
abort();
}
break;
}
case 1: {
break;
}
}
if(buttonIndex …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个应用程序,我用它CGContextShowTextAtPoint
来显示屏幕上的文本.我想显示日文字符,但是CGContextShowTextAtPoint
输入一个C字符串.所以要么A)如何将日文字符更改为C字符串?如果无法做到这一点,B)如何在屏幕上手动打印日文字符(在drawRect方法中).
提前致谢.
我有一个包含三种方案的项目(Debug-MyApp,Beta-MyApp,MyApp)。该项目具有三种配置(Debug,Beta和AppStore)。而且,每个目标都建立各自的配置。当我在Interface Builder中使用自定义类并使用“从目标继承模块”(默认设置)时,它将始终选择Beta_MyApp模块,而不是我正在构建的任何目标(通常是Debug-MyApp)。我在xibs / storyboards中对此进行了验证,因为在Xcode中打开文件会使customModule属性设置为Beta-MyApp。
我还尝试将Interface Builder Xib默认模块和Interface Builder Storyboard默认模块的Project和Target设置都设置为Debug_MyApp。
最终结果是我的自定义类都无法正确呈现。即使Designables说“最新”并且“没有发生界面构建器错误”。
我当前的解决方法是将所有模块显式设置为Debug_MyApp,而不使用从目标继承的模块,这将导致视图正确呈现。
有没有人经历过这个/知道如何补救?
这个问题与我在这里发布的问题有关:Iphone核心数据在保存 时崩溃然而错误是不同的所以我正在提出一个新问题.现在,在尝试将新对象插入到managedObjectContext中时出现此错误:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '"MailMessage" is not a subclass of NSManagedObject.'
Run Code Online (Sandbox Code Playgroud)
但显然它是:
@interface MailMessage : NSManagedObject { ....
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时:
NSManagedObjectModel *managedObjectModel = [[self.managedObjectContext
persistentStoreCoordinator] managedObjectModel];
NSEntityDescription *entity =[[managedObjectModel entitiesByName]
objectForKey:@"MailMessage"];
NSManagedObject *newObject = [[NSManagedObject alloc] initWithEntity:entity
insertIntoManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)
当我不提供MFMailComposeViewController时,它运行正常,但如果我在中运行此代码
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
Run Code Online (Sandbox Code Playgroud)
方法,它在创建newObject变量时抛出上述错误.使用print对象时的实体对象产生以下内容:
(<NSEntityDescription: 0x1202e0>) name MailMessage, managedObjectClassName MailMessage,
renamingIdentifier MailMessage, isAbstract 0, superentity name (null), properties {
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,所以我认为managedObjectContext完全无效.我不知道为什么说MailMessage在那时不是NSManagedObject的子类,而不是另一个.
任何帮助将不胜感激,提前谢谢.