我在目标c中有mac的cocoa应用程序。
现在,在我的应用程序中,我想实现sqlite数据库,就像我为ios应用程序所做的那样。
由于我是mac开发的新手,我不知道如何在cocoa应用程序中实现它。如何与我的应用程序建立sqlite连接?
我使用了sqlite.h和sqlite.m文件并使用了以下代码。
-(void)databaseOpen
{
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [path objectAtIndex:0];
NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:@"SchoolApp.sqlite"];
database = [[Sqlite alloc] init];
[database open:myDBnew];
}
- (void)createEditableCopyOfDatabaseIfNeeded
{
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"SchoolApp.sqlite"];
/*if([[NSFileManager defaultManager] fileExistsAtPath:writableDBPath]){
[[NSFileManager defaultManager] removeItemAtPath:writableDBPath error:nil];
}
*/
success = [fileManager fileExistsAtPath:writableDBPath];
if (success) return;
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"SchoolApp.sqlite"];
////NSLog(@"Default : %@",defaultDBPath);
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
但如何在我的可可应用程序中执行此操作?
请有人指导我。
...谢谢
答案 0 :(得分:1)
您应该可以为OSX和iOS重复使用现有代码,因为这将依赖Foundation.framework
个课程,而不是UIKit
或AppKit
。
注意:您不应该使用NSAssert
来表示代码中的错误,因为如果定义了NS_BLOCK_ASSERTIONS
,可以在编译时删除这些错误;而是抛出一个NSException
。