-3

我有这个方法,我正在尝试调用该方法,[self getUsers ObjectAtIndex:0]但编译器根本不会编译该行并说它是未知的。如何调用数组方法来显示其中的所有字符串?

- (NSArray*)getUsers

{

NSArray *getUsers = [[NSArray alloc] init];
NSString *databasepath;

NSString *docsDir;
NSArray *dirPaths;
//NSString *databasePath;

//get the document directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];

//build the path to the database file
databasepath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:
                                                  @"users.db"]];

const char *dbPath = [databasepath UTF8String];
sqlite3_stmt *statement;
sqlite3 *userdb;

if (sqlite3_open(dbPath, &userdb) == SQLITE_OK)
{
    NSString *querySQL = [NSString stringWithFormat:@"SELECT * FROM USERS WHERE username = \"%@\"", txtUsername.text];
    const char *sql_stmt = [querySQL UTF8String];
    if (sqlite3_prepare_v2(userdb, sql_stmt, -1, &statement, NULL) == SQLITE_OK)
    {
        while (sqlite3_step(statement) == SQLITE_ROW)
        {
            char *field = (char*) sqlite3_column_text(statement, 1);
            NSString *usernameField = [[NSString alloc]initWithUTF8String:field];
            //NSLog(@"%@", usernameField);
            getUsers = [NSArray arrayWithObject:usernameField];

        }

    }
    sqlite3_finalize(statement);
}

sqlite3_close(userdb);

return getUsers;

}

4

2 回答 2

1

使用[[self getUsers] objectAtIndex:0].

如果你使用最新的 Xcode/clang 版本,你也可以使用[self getUsers][0],因为数组现在支持索引。

于 2012-09-29T03:53:51.330 回答
0

假设你有一个方法 -(id)someMethod,然后像这样调用它:

id myValue = [self someMethod];

在 someMethod 内部,有一个 return 语句 - return 右侧的内容将在调用方法或函数中分配给 myValue。

只需像这样调用:

NSArray *arrAllUsers = [self getUsers]; //As getUsers is method which returns nsarray.
于 2012-09-29T04:11:52.857 回答