cuốn sách gpt4 ai đã làm

ios - Làm cách nào để sử dụng các tệp cơ sở dữ liệu hiện có để đọc và ghi trong Xcode?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:02:30 29 4
mua khóa gpt4 Nike

Tôi hơi mới với Xcode và sqlite. Bây giờ tôi có một tệp cơ sở dữ liệu tên là "mydb.db" đã có sẵn một số bảng và dữ liệu. Tôi đã đặt nó vào thư mục mac của mình và kéo nó vào dự án Xcode trong phần "Tệp hỗ trợ".

Đây là mã của tôi, nhưng tôi thấy rằng tôi chỉ có thể đọc "mydb.db" này và không thể chèn dữ liệu vào đó! Khi tôi mở "mydb.db" sau khi thực thi mã của mình thông qua trình quản lý sqlite, tôi không thể tìm thấy Dữ liệu. chèn vào!

Bất cứ ai có thể cho tôi biết làm thế nào để giải quyết vấn đề này? Cảm ơn bạn rất nhiều!

NSString *dbFilePath = [[NSBundle mainBundle] pathForResource:@"mydb" ofType:@"db"];
FMDatabaseQueue *queue = [FMDatabaseQueue cơ sở dữ liệuQueueWithPath:dbFilePath]

[hàng đợi inDatabase:^(FMDatabase *db) {
[db execUpdate:@"CHÈN VÀO GIÁ TRỊ tiêu điểm (?,?,?)" withArgumentsInArray:@[@"100000000",@2,@2]];

}];

câu trả lời hay nhất

Bằng cách thêm tệp db sqlite vào nhóm Tệp hỗ trợ trong Xcode, bạn chỉ cần thêm tệp vào gói ứng dụng của mình để nó được đóng gói cùng với tất cả các tài nguyên khác trong quá trình xây dựng. Vì ứng dụng không thểviếtvào gói của nó, vì vậy bạn phải sao chép tệp cơ sở dữ liệu sqlite từ gói sang vị trí có thể ghi, ví dụ:

#define FORCE_RECOPY_DB KHÔNG

- (void)copyDatabaseIfNeeded {
NSFileManager *fm = [[NSFileManager alloc] init];
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *destinationPath = [documentsPath stringByAppendingPathComponent:@"pte.sqlite"];

void (^copyDb)(void) = ^(void){
NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"pte" ofType:@"sqlite"];
NSAssert1(sourcePath, @"db nguồn không tồn tại ở đường dẫn %@",sourcePath);

NSError *copyError = nil;
if( ![fm copyItemAtPath:sourcePath toPath:destinationPath error:©Error] ) {
DDLogError(@"ERROR | db không thể sao chép: %@", copyError);
}
};
if( FORCE_RECOPY_DB && [fm fileExistsAtPath:destinationPath] ) {
[fm RemoveItemAtPath:lỗi DestinationPath:NULL];
sao chépDb();
}
khác nếu( ![fm fileExistsAtPath:destinationPath] ) {
DDLogInfo(@"INFO | db file cần sao chép");
sao chépDb();
}
}

Bây giờ, khi bạn muốn mở cơ sở dữ liệu, hãy sử dụng vị trí trong đường dẫn tài liệu.

Lưu ý rằng bạn sẽ không thể kiểm tra tệp cơ sở dữ liệu sqlite trong dự án của mình và mong muốn tìm thấy những thay đổi được viết từ mã của bạn. (Vì mã của bạn bây giờ sẽ sử dụng tệp sqlite đã sao chép.)

Giới thiệu về ios - Làm cách nào để sử dụng các tệp cơ sở dữ liệu hiện có trong Xcode để đọc và ghi? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/20214431/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress