gpt4 book ai didi

uitableview - iPhone iOS 4 核心数据 - 程序收到信号 : “EXC_BAD_ACCESS”

转载 作者:行者123 更新时间:2023-12-03 17:43:19 25 4
gpt4 key购买 nike

我正在尝试基于 Apple 的示例项目 TheElements 创建一个应用程序,但使用 Core Data 作为模型。在核心数据中,我有 4 个相关的数据库表。在 UI 中,我有几个 tableViews,每个都显示来自不同 Db 表的行。单击 tableView 中的一行会向下钻取到相关表中的项目,显示在另一个 TableView 中。

一切正常,但应用程序在随机时间意外崩溃并出现错误:程序收到信号:“EXC_BAD_ACCESS”。顺便说一句,此错误仅在设备上调试时显示在控制台中。在模拟器上调试时没有错误显示。这个screen grab显示崩溃后调试器的内容。

我不知道如何破译调试器。我所看到的只是崩溃似乎源于 main() 函数,并且还列出了 _PFManagedObjectReferenceQueue,这导致我猜测我在使用 Core Data 时做错了什么。

为了实现核心数据,我将以下内容添加到我的 App Delegate header 中:

@private  
NSManagedObjectContext *managedObjectContext_;
NSManagedObjectModel *managedObjectModel_;
NSPersistentStoreCoordinator *persistentStoreCoordinator_;

@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator

并将 Apple 的默认方法添加到 App Delegate 实现文件中。

然后在我的数据源协议(protocol) header 中添加:
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;  
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;`

我的数据源头文件如下:
#import <UIKit/UIKit.h>  
#import <CoreData/CoreData.h>
#import "TableViewDataSourceProtocol.h"

@interface MatchesAllDataSource : NSObject <UITableViewDataSource,TableViewDataSource, NSFetchedResultsControllerDelegate>
{
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
}

@end

单击表格单元格时,我将 selectedObject 传递如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath  
{
// deselect the new row using animation
[tableView deselectRowAtIndexPath:newIndexPath animated:YES];

// get the element that is represented by the selected row.
Match *selectedMatch = [dataSource objectForIndexPath:newIndexPath];

// create an AtomicElementViewController. This controller will display the full size tile for the element
MatchViewController *matchController = [[MatchViewController alloc] init];

// set the element for the controller
matchController.selectedMatch = selectedMatch;

// push the element view controller onto the navigation stack to display it
[[self navigationController] pushViewController:matchController animated:YES];
[matchController release];
}`

有谁知道可能导致我崩溃的原因?
有人会指出我正确的方向来寻找答案吗?
有没有更好的方法来实现具有多个 tableViews 的 Core Data?
有人会给我指出一个具有多个 tableViews 的 Core Data 的好例子吗?

最佳答案

Marcus 的代码也有这个问题,因为我将 UITableViewController 更改为常规 UIViewController 并忘记输入标题。这是他的原始代码:

- (id)initWithStyle:(UITableViewStyle)style {
if (self = [super initWithStyle:style]) {
self.title = @"Australia";
}
return self;

}

因此,如果您碰巧更改了内容,请确保您在某处设置了 self.title,以便自定义 NSArray+PerformSelector 在应用程序初始化时可以看到它……就像在 init 中一样。

关于uitableview - iPhone iOS 4 核心数据 - 程序收到信号 : “EXC_BAD_ACCESS” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4159787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com