2012-09-29 31 views
-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; 

}

+0

[[自getUsers] ObjectAtIndex:0]; –

回答

1

使用[[self getUsers] objectAtIndex:0]

如果您使用最新的Xcode/clang版本,您還可以使用[self getUsers][0],因爲數組現在支持索引。

0

考慮說你有一個方法 - (ID)的someMethod,然後把它稱爲是這樣的:

id myValue = [self someMethod]; 

裏面的someMethod,有一個return語句 - 無論是對返回的權利是什麼將在調用方法或函數中分配給myValue。

只需撥打這樣的:

NSArray *arrAllUsers = [self getUsers]; //As getUsers is method which returns nsarray.