-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]ます。

[self getUsers][0]最新の Xcode/clang バージョンを使用する場合は、配列がインデックス作成をサポートするようになったため、も使用できます。

于 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 に答える