gpt4 book ai didi

iOS Objective C 方法问题

转载 作者:行者123 更新时间:2023-11-29 03:59:41 25 4
gpt4 key购买 nike

我正在尝试将我的一个项目从 Android 移植到 iOS,但遇到了一些令人烦恼的基本问题。就像目前一样,我无法调用我创建的方法,因为它似乎不存在,这很令人困惑,因为它就在那里。

我不确定我做错了什么。我尝试查看一些有关该主题的书籍以及有关该主题的其他问题,但找不到任何可以解释我做错了什么的内容。据我所知,我做得对。

我收到以下警告:

找不到实例方法“-CheckIfTableExists:withDB”(返回类型默认为“id”)

接收器类型“int”不是“d”或接口(interface)指针,请考虑将其转换为“id”

我认为第二个警告是因为编译器认为将我的返回值更改为“id”而不是“int”会有所帮助,因此我尝试将值放入的变量不匹配。但是我不明白为什么它首先将返回类型从 int 更改为 id ,如果返回变量被弄乱,那么编译器找到了该方法,那么为什么它说找不到该方法?

有人可以帮忙吗?下面是有问题的代码。

#import "sqlite3.h"

@implementation DatabaseHelper

sqlite3 *db;

NSString *Database_Name = @"UniversalAVDatabase.db";
int Database_Version = 14;

NSString *Database_Table = @"Database";

NSString *Attribute_DB_Version = @"Database_Version";

- (NSString *)filePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:Database_Name];
}

- (int) CheckIfTableExists:(NSString *) TableName withDB:(sqlite3 *) db
{
NSString *dbQuery = [NSString stringWithFormat:@"SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name = '%@';", TableName];
sqlite3_stmt *SQLStatement;
int Result = sqlite3_prepare_v2(db, [dbQuery UTF8String], -1, &SQLStatement, nil);
return Result;
}

- (void) Initialize
{
int CurrentDatabaseVersion = 1;
//attempt to open the database.
int Result = sqlite3_open([[self filePath] UTF8String], &db);
if (Result == SQLITE_OK)
{
//Check if the Database table exists
int TableDBExists = 1;
[TableDBExists CheckIfTableExists:Database_Table withDB:db]; //I get two warnings from this
if (TableDBExists == 1)
{
//If it exists check the version of the database to see if it is a later version.
//CurrentDatabaseVersion = dbHelper.GetDatabaseVersion(db);
}
if (CurrentDatabaseVersion < Database_Version)
{
//UpgradeDatabase();
}
}
else
{
//If the database does not exist then create it.
}
}

@end

最佳答案

[TableDBExists CheckIfTableExists:Database_Table withDB:db]; 

应该是:

TableDBExists = [self CheckIfTableExists:Database_Table withDB:db]; 

您需要包含您的类的 .h 文件:

#include "DatabaseHelper.h"

我假设您在 DatabaseHelper.h 文件中声明了出现错误的方法:

- (int) CheckIfTableExists:(NSString *) TableName withDB:(sqlite3 *) db;

我看到的很多其他东西告诉我你来自不同的语言。请参阅:https://github.com/github/objective-c-conventionshttp://blog.gomiso.com/2011/08/15/objective-c-conventions/ .

关于iOS Objective C 方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16051617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com