プログラミングの初心者**
可変配列からオブジェクトにアクセスしようとすると、「境界を超えた」NSRangeException が発生します。エラーは objectAtIndex の長い数値を示していますが、配列には現在 3 つのオブジェクトしかありません。
これはエラー メッセージです: キャッチされていない例外 'NSRangeException' が原因でアプリを終了しています。
コアデータを使用しています。
コア データを介して入力されたテーブルビューの最初の行を選択すると、アプリがクラッシュします。
可変配列は「allDates」と呼ばれます。
それを引き起こしていると思われるコードは、次の prepareForSegue メソッドにあります。
DateTableViewController.m の一部
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSString *segueIdentifier = [segue identifier];
if ([segueIdentifier isEqualToString:@"showDetails"])
{
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Date"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
self.allDates = [[context executeFetchRequest:fetchRequest error:nil] mutableCopy];
DateIdeaDetailViewController *vc = [segue destinationViewController];
NSIndexPath *selectedRowIndexPath = [self.tableView indexPathForSelectedRow];
NSUInteger index = [allDates indexOfObject:selectedRowIndexPath];
//edited based on WilliamFalcon added "(int)"
_string = [NSMutableString stringWithFormat:@"%@", [allDates[(int)index] valueForKey:@"date_idea"]];
vc.dateIdeaLabelText = self.string;
}
}
DateTableViewController.h
#import <UIKit/UIKit.h>
#import "LifeBook.h"
#import "LifeBookAppDelegate.h"
#import "DateIdeaDetailViewController.h"
@interface DateTableViewController : UITableViewController
@property (strong, nonatomic) NSMutableArray *allDates;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (weak, nonatomic) IBOutlet UITableViewCell *tableViewCell1;
@property (strong, nonatomic) NSMutableString *string;
@property (strong, nonatomic) NSString *label;
@end
これがばかげた質問であるかどうか教えてください。あらゆる種類のリソースを歓迎します。
助けてくれてありがとう