"なぜ" SQLiteDBが "-checkIfDatabaseExists"に応答しない可能性があるのですか?これを引き起こしていると私はそれを修正する方法は何ですか? (私はこれを動作させるのには本当に近いですが、私は初心者なので、まだ問題があります)。これは何が原因ですか?
私はこれを得ることができれば助けていただきありがとうございます。
#import "SQLiteDB.h"
static SQLiteDB *sharedSQLiteDB = nil; // makes this a singleton class
@implementation SQLiteDB
@synthesize db, dbPath, databaseKey;
//-------------- check for database or create it ----------------|
#pragma mark Singleton Methods
+ (SQLiteDB *) sharedSQLiteDB {
if(!sharedSQLiteDB) {
sharedSQLiteDB = [[SQLiteDB alloc] init];
[sharedSQLiteDB checkIfDatabaseExists];
}
return sharedSQLiteDB;
}
+(id)allocWithZone:(NSZone *)zone {
if(!sharedSQLiteDB) {
sharedSQLiteDB = [super allocWithZone:zone];
return sharedSQLiteDB;
}
else {
return nil;
}
}
-(id)copyWithZone:(NSZone *)zone {
return self;
}
-(void) release {
// no-op
}
- (void) checkIfDatabaseExists {
// Get the path to the database file
NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [searchPaths objectAtIndex:0];
NSString *databasePath = [documentPath stringByAppendingPathComponent:@"ppcipher.s3db"];
// Open the database file
const char *cDatabasePath = [databasePath cStringUsingEncoding:NSUTF8StringEncoding];
if(sqlite3_open(cDatabasePath, &db) == SQLITE_OK) // does it exist?
return;
else { // create database file here
}
}
@end
スクリーンショットだけでなく、テキストとしてコードを貼り付けてください。 – mkb
もちろん....なぜ別のデータベースラッパー(これがあなたがやっているものなら)を書くのはどうですか? Core Dataは、iOS/Mac OS X上でデータベースを作成する際にサポートされ、最高のパフォーマンス(最高のエンジニアリングの努力なしに)です。任意のスキーマのSQLiteデータベースをラップする必要がある場合は、FMDBを使用する方法があります。 – bbum