“方法”实施在哪里? (我是新手)

时间:2011-03-08 00:09:22

标签: objective-c

我有这段代码:

#import "SQLiteDB.h"

@implementation SQLiteDB

@synthesize db, dbPath, databaseKey;

@end



//--------------    check for database or create it    ----------------|

- (void)checkForDatabase  {

    NSFileManager *filemanager = [NSFileManager defaultManager];
    NSString *databasePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] 
                              stringByAppendingString:@"/ppcipher.s3db"];

    if(![filemanager fileExistsAtPath:databasePath]) {  //Database doesn't exist yet, so we create it...
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/ppcipher.s3db"];

        sqlite3 *db;
        if(sqlite3_open(databasePath, db) == SQLITE_OK)  {

        }

    }
}

它抱怨“方法定义不在@implementation上下文中”。那它去哪儿了? (我试过.h文件,但仍然得到错误)

2 个答案:

答案 0 :(得分:3)

方法实施必须在@implementation@end之间进行。那就是:

#import "SQLiteDB.h"

@implementation SQLiteDB

@synthesize db, dbPath, databaseKey;

-(void) checkForDatabase {

    ...

}

@end

答案 1 :(得分:1)

它应该在@implementation block里面

#import "SQLiteDB.h"

@implementation SQLiteDB

@synthesize db, dbPath, databaseKey;



//--------------    check for database or create it    ----------------|

- (void)checkForDatabase  {

    NSFileManager *filemanager = [NSFileManager defaultManager];
    NSString *databasePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] 
                              stringByAppendingString:@"/ppcipher.s3db"];

    if(![filemanager fileExistsAtPath:databasePath]) {  //Database doesn't exist yet, so we create it...
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/ppcipher.s3db"];

        sqlite3 *db;
        if(sqlite3_open(databasePath, db) == SQLITE_OK)  {

        }

    }
}

@end