Эй, ребята, мое приложение вылетает при загрузке, и оно вызывает это при отладке:
2011-02-26 00:24:33.254 LCPapers[5182:207] Set up the cell...
2011-02-26 00:24:33.255 LCPapers[5182:207] 0
2011-02-26 00:24:33.257 LCPapers[5182:207] -[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x4b175f0
2011-02-26 00:24:33.261 LCPapers[5182:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x4b175f0'
Было бы здорово, если бы кто-то мог сказать мне, что исправить, так как я довольно нов ипотраченные на это часы были ужасны!
RootViewController.h
#import <UIKit/UIKit.h>
@class OverlayViewController;
@interface RootViewController : UITableViewController {
NSArray *tableDataSource;
NSString *CurrentTitle;
NSInteger CurrentLevel;
IBOutlet UITableView *tableView;
NSDictionary *data;
BOOL letUserSelectRow;
OverlayViewController *ovController;
}
@property (nonatomic, retain) NSArray *tableDataSource;
@property (nonatomic, retain) NSString *CurrentTitle;
@property (nonatomic, readwrite) NSInteger CurrentLevel;
@property (nonatomic, retain) NSDictionary *data;
@end
и мой RootViewControllerм
#import "RootViewController.h"
#import "DetailViewController.h"
#import "LCPapersAppDelegate.h"
@implementation RootViewController
@synthesize tableDataSource, CurrentTitle, CurrentLevel;
@synthesize data;
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
// Override point for customization after application launch.
NSString *Path = [[NSBundle mainBundle] bundlePath];
NSString *DataPath = [Path stringByAppendingPathComponent:@"data.plist"];
NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:DataPath];
self.data = tempDict;
[tempDict release];
if(CurrentLevel == 0) {
NSLog(@"Initialize our table data source");
//Initialize our table data source
self.navigationItem.title = @"Leaving Cert. Papers";
NSArray *tempArray = [[NSArray alloc] init];
self.tableDataSource = tempArray;
[tempArray release];
self.tableDataSource = [data objectForKey:@"Rows"];
}
else
NSLog(@"self.navigationItem.title = CurrentTitle;");
self.navigationItem.title = CurrentTitle;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Customize the number of rows in the table view.");
return [self.tableDataSource count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Customize the appearance of table view cells.");
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
NSLog(@"Set up the cell...");
NSLog(@"%d", indexPath.row);
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];
NSArray *array = [dictionary objectForKey:@"Title"];
cell.text = [array objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Get the selected Subject
NSString *selectedSubject = nil;
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];
NSArray *array = [dictionary objectForKey:@"Title"];
selectedSubject = [array objectAtIndex:indexPath.row];
//Initialize the detail view controller and display it.
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
dvController.selectedSubject = selectedSubject;
[self.navigationController pushViewController:dvController animated:YES];
[dvController release];
dvController = nil;
}
- (NSIndexPath *)tableView :(UITableView *)theTableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(letUserSelectRow)
return indexPath;
else
return nil;
}
- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath {
//return UITableViewCellAccessoryDetailDisclosureButton;
return UITableViewCellAccessoryDisclosureIndicator;
}
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
[self tableView:tableView didSelectRowAtIndexPath:indexPath];
}
- (void)dealloc {
[data release];
[ovController release];
[super dealloc];
}
@end
По просьбе Луки Бернарди вот список:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Rows</key>
<array>
<dict>
<key>Title</key>
<string>English</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>Paper 1</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>2010</string>
</dict>
<dict>
<key>Title</key>
<string>2009</string>
</dict>
</array>
</dict>
<dict>
<key>Title</key>
<string>Paper 2</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>2010</string>
</dict>
<dict>
<key>Title</key>
<string>2009</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>Title</key>
<string>Maths</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>Higher</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>Paper 1</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>2010</string>
<key>Url</key>
<string>http://x.ie/LC003ALP100EV.pdf</string>
</dict>
<dict>
<key>Title</key>
<string>2009</string>
<key>Url</key>
<string>http://x.ie/LC003ALP100EV.pdf</string>
</dict>
</array>
</dict>
<dict>
<key>Title</key>
<string>Paper 2</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>2010</string>
<key>Url</key>
<string>http://examinations.ie/archive/exampapers/2010/LC003ALP200EV.pdf</string>
</dict>
<dict>
<key>Title</key>
<string>2009</string>
<key>Url</key>
<string>http://examinations.ie/archive/exampapers/2009/LC003ALP200EV.pdf</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>Title</key>
<string>Ordinary</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>Paper 1</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>2010</string>
<key>Url</key>
<string>http://www.examinations.ie/archive/exampapers/2010/LC003GLP100EV.pdf</string>
</dict>
<dict>
<key>Title</key>
<string>2009</string>
<key>Url</key>
<string>http://www.examinations.ie/archive/exampapers/2009/LC003GLP100EV.pdf</string>
</dict>
</array>
</dict>
<dict>
<key>Title</key>
<string>Paper 2</string>
<key>Children</key>
<array>
<dict>
<key>Title</key>
<string>2010</string>
<key>Url</key>
<string>http://www.examinations.ie/archive/exampapers/2010/LC003GLP200EV.pdf</string>
</dict>
<dict>
<key>Title</key>
<string>2009</string>
<key>Url</key>
<string>http://www.examinations.ie/archive/exampapers/2009/LC003GLP200EV.pdf</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
</plist>
enter code here