gpt4 book ai didi

objective-c - NSDocumentDirectory提供奇怪的目录作为输出

转载 作者:行者123 更新时间:2023-12-03 16:46:24 24 4
gpt4 key购买 nike

我正在尝试从我的文档目录打开sqlite数据库:

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *dbFileName = [docDir stringByAppendingPathComponent:@"DatabaseName.sqlite"];

self.db = [FMDatabase databaseWithPath:dbFileName];

self.db.logsErrors = YES;

self.db = _db;
if ([self.db open]) {
NSLog(@"database opened");

}
NSLog(@"docDir = %@",[NSString stringWithFormat:@"%@%@",docDir,dbFileName]);


NSLog显示奇怪的路径 docDir = /Users/userName/Documents/Users/userName/Documents/DatabaseName.sqlite而不是 /Users/userName/Documents/DatabaseName.sqlite。打开时没有错误或警告。

之后,我尝试从表中获取count(*)

NSString *queryString = [NSString stringWithFormat:@"SELECT count(*) FROM histories"];
FMResultSet *result = [self.db executeQuery:queryString];
NSLog(@"count = %i", [result intForColumnIndex:0]);


当1万行时数据库有更多,但NSLog显示0。该应用程序不适用于iOS,仅适用于命令行。在哪里可以找到问题?

最佳答案

你有

docDir = /Users/userName/Documents
dbFileName = /Users/userName/Documents/DatabaseName.sqlite


因此在

NSLog(@"docDir = %@",[NSString stringWithFormat:@"%@%@",docDir,dbFileName]);


docDir打印两次( dbFileName已包含 docDir)。

备注:语句 self.db = _db;看起来可疑,您可能希望将其删除。

补充:FMDB文档指出:


尝试访问之前,必须始终调用 -[FMResultSet next]
查询中返回的值,即使您只希望得到一个。


因此,您的代码可能应如下所示:

FMResultSet *result = [self.db executeQuery:queryString];
if ([result next]) {
NSLog(@"count = %i", [result intForColumnIndex:0]);
}

关于objective-c - NSDocumentDirectory提供奇怪的目录作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com