jjzjj

ios - 错误,核心数据,原因: '*** -[_PFArray objectAtIndex:]: index (2) beyond bounds (2)'

coder 2023-09-27 原文

大家好,我几乎是编程新手。 我遇到了一个无论如何都无法解决的错误。即使在与花药解决方案进行比较之后。 我已经为此工作了大约 3 天。

那么让我完整地描述一下我的问题:

1.这是我的实现代码:

#import "DocumentTableViewController.h"
#import "AddDocumentTableView.h"
#import "DB_document.h"

@implementation DocumentTableViewController

@synthesize managedObjectContext;
@synthesize btnAddDocument;
@synthesize fetchedObjects;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSManagedObjectContext *context = managedObjectContext;
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"DB_document" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];
    NSError *error;
    fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
    NSLog(@"%d",[fetchedObjects count]);
}

- (void)viewDidUnload
{
    [self setBtnAddDocument:nil];
    [super viewDidUnload];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    int result = 0;
    if (section == 0) 
    {
        result = [fetchedObjects count] + 1;
    }
    else if (section == 1)
    {
        result = 1;
    }
    return result;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 40;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    DB_document *db_document = [fetchedObjects objectAtIndex:indexPath.row];

    if (indexPath.section == 0 && indexPath.row == 0) 
    {
        UILabel *lblMoney = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 70, 40)];
        lblMoney.text = @"amount";
        lblMoney.textAlignment = UITextAlignmentCenter;
        lblMoney.textColor = [UIColor blackColor];
        lblMoney.backgroundColor = [UIColor clearColor];
        lblMoney.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblMoney];

        UILabel *lblDescription = [[UILabel alloc] initWithFrame:CGRectMake(85, 0, 150, 40)];
        lblDescription.text = @"description";
        lblDescription.textAlignment = UITextAlignmentCenter;
        lblDescription.textColor = [UIColor blackColor];
        lblDescription.backgroundColor = [UIColor clearColor];
        lblDescription.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblDescription];

        UILabel *lblDate = [[UILabel alloc] initWithFrame:CGRectMake(240, 0, 70, 40)];
        lblDate.text = @"date";
        lblDate.textAlignment = UITextAlignmentCenter;
        lblDate.textColor = [UIColor blackColor];
        lblDate.backgroundColor = [UIColor clearColor];
        lblDate.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblDate];

        UIButton *btnLine1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btnLine1.frame = CGRectMake(80, 0, 1, 40);
        [cell addSubview:btnLine1];

        UIButton *btnLine2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btnLine2.frame = CGRectMake(240, 0, 1, 40);
        [cell addSubview:btnLine2];

        return cell;
    }
    if (indexPath.section == 0 && indexPath.row != 0)
    {
        UILabel *lblMoney = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 70, 40)];
        lblMoney.text = [NSString stringWithFormat:@"%d",db_document.docAmount];
        lblMoney.textAlignment = UITextAlignmentCenter;
        lblMoney.textColor = [UIColor blackColor];
        lblMoney.backgroundColor = [UIColor clearColor];
        lblMoney.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblMoney];

        UILabel *lblDescription = [[UILabel alloc] initWithFrame:CGRectMake(85, 0, 150, 40)];
        lblDescription.text = db_document.docDescription;
        lblDescription.numberOfLines = 2;
        lblDescription.textAlignment = UITextAlignmentCenter;
        lblDescription.textColor = [UIColor blackColor];
        lblDescription.backgroundColor = [UIColor clearColor];
        lblDescription.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblDescription];

        UILabel *lblDate = [[UILabel alloc] initWithFrame:CGRectMake(240, 0, 70, 40)];
        NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
        [dateFormater setDateFormat:@"yyyy/mm/dd"];
        lblDate.text = [NSString stringWithFormat:@"%@",[dateFormater stringFromDate:(NSDate *)db_document.docDate]];
        lblDate.textAlignment = UITextAlignmentCenter;
        lblDate.textColor = [UIColor blackColor];
        lblDate.backgroundColor = [UIColor clearColor];
        lblDate.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblDate];

        UIButton *btnLine1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btnLine1.frame = CGRectMake(80, 0, 1, 40);
        [cell addSubview:btnLine1];

        UIButton *btnLine2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btnLine2.frame = CGRectMake(240, 0, 1, 40);
        [cell addSubview:btnLine2];

        return cell;
    }
    if (indexPath.section == 1)
    {
        UILabel *lblMoney = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 70, 40)];
        lblMoney.text = @"";
        lblMoney.textAlignment = UITextAlignmentCenter;
        lblMoney.textColor = [UIColor blackColor];
        lblMoney.backgroundColor = [UIColor clearColor];
        lblMoney.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblMoney];

        UILabel *lblTotalAmount = [[UILabel alloc] initWithFrame:CGRectMake(165, 0, 140, 40)];
        lblTotalAmount.text = @"amounts";
        lblTotalAmount.textAlignment = UITextAlignmentCenter;
        lblTotalAmount.textColor = [UIColor blackColor];
        lblTotalAmount.backgroundColor = [UIColor clearColor];
        lblTotalAmount.font = [UIFont systemFontOfSize:12];
        [cell addSubview:lblTotalAmount];

        UIButton *btnLine = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btnLine.frame = CGRectMake(160, 0, 1, 40);
        [cell addSubview:btnLine];

        return cell;
    }
    return cell;
}

- (IBAction)btnAddDocument_click:(id)sender
{
    AddDocumentTableView *addDocumentTableView = [[AddDocumentTableView alloc] init];
    addDocumentTableView.managedObjectContext = managedObjectContext;
    [self.navigationController pushViewController:addDocumentTableView animated:YES];
}

2.这是错误:

2012-06-16 15:25:31.696 账户 5[5534:fb03] 2 2012-06-16 15:25:31.704 Account5[5534:fb03] * 由于未捕获的异常 'NSRangeException' 而终止应用程序,原因:'* -[_PFArray objectAtIndex:]: index (2) beyond边界(2)' *** 首先抛出调用栈:

3.让我描述一下程序。我可以使用核心数据将数据保存到数据库,但是当我想获取数据时,程序跳出。我必须考虑我认为 NSManagedObjectContext 获取了数据,因为 fetchedObjects 数组有 2 个数据,因为我插入了。 我不得不说我的 RootViewController 是 DocumentTableViewController 这意味着当我运行程序时它崩溃了。如果我想运行该应用程序,我必须注释 DB_document *db_document = [fetchedObjects objectAtIndex:indexPath.row];

在该应用程序运行后,我可以在另一个页面中插入数据。 我必须考虑到,当应用程序崩溃时,它会准确地停止在

DB_document *db_document = [fetchedObjects objectAtIndex:indexPath.row];

绿色高亮线。 谢谢你

最佳答案

这是你的问题:

numberOfRowsInSection 中,您将一个添加到 fetchedResults 数组。据推测,您想在该部分中添加一个额外的行。那也行。

但是,在 cellForRowAtIndexPath 中,您将 indexPath.row 作为 db_document 的索引。显然,在最后一行它会崩溃。您必须首先检查您所在的行,然后仅当您需要该特定行时才检索您的 db_document

关于ios - 错误,核心数据,原因: '*** -[_PFArray objectAtIndex:]: index (2) beyond bounds (2)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063209/

有关ios - 错误,核心数据,原因: '*** -[_PFArray objectAtIndex:]: index (2) beyond bounds (2)'的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  6. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  7. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  8. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  9. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  10. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

随机推荐