我有一个名为SqliteImageAccess的类,它将提供各种方法来提供对某些sqlite功能的支持。我有一个类型为sqlite3的本地类变量和一个名为opendb的类方法。这个类方法应该只做一件事和一件事。打开数据库。Objective-C - 访问初始化方法内部的类方法
唯一的粘这里的一点是,我的sqlite3的对象将是一个实例变量和Objective-C,不管是什么奇怪的原因,不会让你访问的类方法中的实例变量。显然,在其他语言中,当你实例化一个类时,该类的构造函数可能会调用一个私有方法来初始化一些本地类变量(也许是本地私有变量)。我想通过相当于Objective-C类构造函数方法的sqlite3对象来做同样的事情。也许有人可以帮助,因为我被困在这一个。
很显然,在另一个类中,我可以实例化SqliteImageAccess类,然后调用opendb方法。这工作正常。我不想这样做。当我实例化类时,目标是让类自动处理数据库的打开。
最后,这将是可用做其他工作的SQLite(插入等)的其他方法,我将需要完全访问数据库对象。在此先感谢您的帮助。
//SqliteImageAccess.h
@interface SqliteImageAccess : NSObject {
}
+(void)opendb; //class method
@end
//SqliteImageAccess.m
#import "SqliteImageAccess.h"
@implementation SqliteImageAccess
static sqlite3 *db;
+(void)initialize{
[self opendb];
}
+(void)opendb{
int open = sqlite3_open("/Users/csmith/RPG/cws.sqlite3", &db);
if(open == SQLITE_OK){
NSLog(@"Database was opened successfully");
}
else {
NSLog(@"open result = %d", open);
}
}
@end
@correction - 我将数据库移到实现文件并将其定义为静态。另外我认为我的初始化实际上应该是 - (void)init,但是我得到一个警告,告诉我有冲突的类型。不知道那是关于什么。 – usmsci 2011-06-11 06:14:31
'init'必须声明为返回'id' - 一个通用指针。你已经解决了这个问题吗?看起来你在得到答案后改变了一些东西,我不能完全说出你的问题已经存在了。 – 2011-06-11 06:30:01
警告是因为它应该是 - (id)init而不是 - (void)init。返回类型是“id”。 – Sailesh 2011-06-11 06:30:31