2014-07-11 3 views
-1

안녕하세요!배열의 오류 (sqlite3 *) 데이터베이스 개체

배열에 sqlite3 객체를 삽입/저장하는 것과 관련된 문제가 있습니다.

-(void)addDatabase:(sqlite3*)database databaseName:(NSString*)language inLocation:(NSString*)locationPath { 
    // add database to array of databases 
    if ([language length] > 0) { 
     [[self.openDatabases objectForKey:@"object"] addObject:database]; 
     [[self.openDatabases objectForKey:@"language"] addObject:language]; 
     [[self.openDatabases objectForKey:@"location"] addObject:locationPath]; 
    } 

    //TODO: add db 
} 

여기에서 : [[self.openDatabases objectForKey:@"object"] addObject:database]; 난 항상 오류가 나는 구현이 방법을 가지고있다. 그것은 sqlite3 객체를 허용하지 않는다는 것입니다. 나는이와 붙어있어

ATIDatabase.h 
@property sqlite3 *database; 

ATIDatabase.m 
@synthesize database = _database; 

:

이 해당 개체의 내 선언입니다. 저는 IOS 프로그래밍의 새로운 기능입니다.

감사합니다.

답변

0

Objective-C 개체는 Objective-C 컬렉션 클래스에 저장할 수 있으며 sqlite3은 Objective-C 개체가 아닙니다.

모든 데이터베이스 특성을 포함하는 사용자 지정 개체를 만들고 그 배열을 사용하기 만하면됩니다. 이것은 사전의 배열보다 더 유용 할 것입니다.

Database.h :

#import <Foundation/Foundation.h> 

@interface Database : NSObject 
@property (nonatomic, assign) sqlite3 *database; 
@property (nonatomic) NSString *language; 
@property (nonatomic) NSURL *path; 

- (id)initWithDatabase:(sqlite *)database 
       language:(NSString *)language 
        path:(NSURL *)path; 

@end 

Database.m :

#import "Database.h" 

@implementation Database 

- (id)initWithDatabase:(sqlite *)database 
       language:(NSString *)language 
        path:(NSURL *)path 
{ 
    self = [super init]; 
    if (self) { 
     self.database = database; 
     self.language = language; 
     self.path = path; 
    } 
    return self; 
} 

@end 

그리고 당신이 그와 같은 객체를 한 후에는 그 클래스에 메소드를 추가하여 데이터베이스 작업을 추상화 시작할 수 있습니다 (그리고 일단 그 일을 시작하면 Statement 객체가 필요하다는 것을 알게 될 것입니다. 그러나 나는 빗나갑니다.

EDIT OP의 요청에 따라 업데이트.

그래서 당신이 될 것이다 게시 방법의 새로운 버전 (필자는 매개 변수 이름을 변경하고 경로를 NSURLNSString로 전환 한 사용자주의. 또한 내가 self.openDatabasesNSMutableArray입니다 가정했습니다).

-(void)addDatabase:(sqlite3 *)database 
      language:(NSString *)language 
     inLocation:(NSURL *)path 
{ 
    Database *db = [[Database alloc] initWithDatabase:database 
              langauge:language 
               path:path]; 
    [self.openDatabases addObject:db]; 

    //TODO: add db 
} 
+0

그러나 이러한 개체를 nsmutablearray에 저장하는 방법을 보여줄 수 있습니까? – user987654321