无法从NSMutableArrayIPHONE SDK获得自定义对象

问题描述

| 我的NSMutableArray有问题...在我的函数(readRoutes)中填充了NSMutableArray之后,我无法提取对象。...在readRoutes函数中,我可以...我不知道在哪里问题.. 首先,NSMutableArray在readRoutes方法中填充Route对象...(在RoutesListView文件内部)(我需要在TableView单元格之后填充这些Route对象...) 这是Route.h文件:
@interface Route : NSObject {
    NSString *routeId;
    NSString *routeDirection;
    NSString *routeName;
    NSString *routeCode;
}
@property (nonatomic,retain) NSString *routeId;
@property (nonatomic,retain) NSString *routeDirection;
@property (nonatomic,retain) NSString *routeName;
@property (nonatomic,retain) NSString *routeCode;

-(id)initWithName:(NSString *)name direction:(NSString *)d routeId:(NSString *)rid code:(NSString *)c;
@end
Route.m文件:
#import \"Route.h\"

@implementation Route
@synthesize routeId;
@synthesize routeDirection;
@synthesize routeName;
@synthesize routeCode;

-(id)initWithName:(NSString *)name direction:(NSString *)d routeId:(NSString *)rid code:(NSString *)c{
    self.routeId=rid;
    self.routeName=name;
    self.routeDirection=d;
    self.routeCode=c;
    return self;
}
@end
现在这是RoutesListView.h文件(一个UITableViewController)
#import <UIKit/UIKit.h>
#import \"Route.h\"

@interface RoutesListView : UITableViewController  <UITableViewDelegate,UITableViewDataSource> {
    NSMutableArray *routeArray;
    NSString *dbName;
    NSString *dbPath;
}
@property (nonatomic,retain) NSMutableArray *routeArray;
@property (nonatomic,retain) NSString *dbName;
@property (nonatomic,retain) NSString *dbPath;

-(void)readRoutes;
@end
在RoutesListView.m文件中:
#import \"RoutesListView.h\"
#import \"Route.h\"
#import <sqlite3.h>

@implementation RoutesListView

@synthesize routeArray;
@synthesize dbName,dbPath;

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {
    dbName = @\"data.db\";
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    dbPath = [documentsDir stringByAppendingPathComponent:dbName];
    routeId =[[NSMutableArray alloc] init];

    //routeArray

        NSMutableArray * array = [[NSMutableArray alloc] init]; 
    self.routeArray = array;


    [array release];
    [self readRoutes];
    [super viewDidLoad];
}
当我填充NSMutableArray时,将其放在readRoutes方法中(该方法可以正常工作...):
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {

                // Read the data from the result row
                NSString *aId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,0)];
                NSString *aDirection =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,1)];
                NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,2)];
                NSString *aCode = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,3)];

                Route *maRoute = [[Route alloc] initWithName:aName direction:aDirection routeId:aId code:aCode];

                                // I fill the NSMutableArray here...
                [routeArray addObject:maRoute];

                                [maRoute release];
                [aId release];
                [aDirection release];
                [aName release];
                [aCode release];
            }
最终,当我设置了单元课本时……崩溃了! :
- (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] autorelease];
    }

    // Configure the cell...
    NSUInteger row = [indexPath row];
    Route *myRoute = (Route *)[routeArray objectAtIndex:row];
    cell.textLabel.text = myRoute.routeName;
    [myRoute release];
    return cell;
}
帮助我了解...我为此失去了头发... 谢谢 马克西姆     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)