2013-10-15 4 views
0

sqlite3 데이터베이스가로드되어 액세스 할 수 있으며 다음 표의 내용을 NSComboBox에 넣으려고합니다. 그런 다음 다른 키의 기본 키베이스를 자동 선택합니다. 작동 매개 변수). (I가, 또는 그것을 고려하면 더 나은 연습 할 경우 이상적으로 코드 만 바인딩을 사용)프로그래밍 방식으로 키/값 (또는 바인딩)이있는 NSComboBox로드

(table) _backup_increment: 
('incrementid', 'value', 'description') 
(1, 'h', 'hours') 
(2, 'd', 'days') 
(3, 'w', 'weeks') 
(4, 'm', 'months') 
(5, 'y', 'years') 

목표는 어떻게 든에 그래서 같은 NSComboBox에 해당 항목을로드 : 여기에 테이블 내용입니다 :

 _______________________ 
key: [ (Select Value) |\/] 
     ----------------------- 
key:1 | h (hours)   | 
key:2 | d (days)   | 
key:3 | w (weeks)   | (* auto select this one as the default for now) 
key:4 | m (months)   | 
key:5 | y (years)   | 
     ----------------------- 

어느 시점에서 incrementid, value 및 description의 속성으로 3 개의 노출 된 인스턴스 변수가있는 BackupIncrement 클래스를 만들었습니다. NSMutableArray를로드하고 프로그래밍 방식으로 데이터 소스로 연결하려고 시도했지만 작동하지 못하는 것 같습니다. 여기 내 코드는 내가 객체와 가변 배열을 가지고 노는 한 경우 지금까지 볼 수 있습니다 :

-(void)doAddItemsTocmbDefaultBackupIncrement { 
    const char* chrSQLSelect = "SELECT * FROM _backup_increments"; 
    sqlite3_stmt* compiledSQL; 
    if (sqlite3_prepare_v2(claAppDelegate.sl3Database, chrSQLSelect, -1, &compiledSQL, NULL) == SQLITE_OK) { 
     while (sqlite3_step(compiledSQL) == SQLITE_ROW) { 
      BackupIncrement* bi = [[BackupIncrement alloc] 
           initWithintIncrementId:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 0)] 
           AndstrIncrementValue:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 1)] 
           AndstrIncrementDescription:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 2)]]; 
      //[cmbDefaultBackupIncrement addItemWithObjectValue:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 1)]]; 
      [cmbDefaultBackupIncrement addItemWithObjectValue:bi]; 
      [marBackupIncrement addObject:bi]; 
//   NSLog(@"%ld: %@(%@)", 
//     (long)[[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 0)] integerValue], 
//     [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 1)], 
//     [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledSQL, 2)]); 
//   NSLog(@"==========="); 
     } 
     for (id obj in marBackupIncrement) 
      NSLog(@"obj: %@", [obj valueForKey:@"intIncrementId"]); 
     [cmbDefaultBackupIncrement reloadData]; 
     //NSLog(@"What? %@", marBackupIncrement); 
    } 
} 

그래서 그래 - 프로그래밍이 일을하거나 XCode5에 바인딩 어떤 도움을 주시면 감사하겠습니다! 감사!

답변