2012-09-29 5 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]을 사용할 수도 있습니다. 어떤 것이다 반환의 오른쪽에 무엇이든입니다 -

id myValue = [self someMethod]; 
가 는 return 문이

내부 것으로 someMethod, 거기 (ID) 것으로 someMethod 다음과 같이라고 불렀다 -

0

고려하면이 방법을 꿨어 호출하는 메소드 또는 함수에서 myValue에 할당 할 수 있습니다.

그냥 같이 전화 :

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