gpt4 book ai didi

ios - FM数据库队列死锁

转载 作者:行者123 更新时间:2023-11-29 02:25:12 30 4
gpt4 key购买 nike

我正在使用 FMDatabaseQueue 并将其设置为单例

static FMDatabaseQueue* sharedDatabase;

+ (FMDatabaseQueue *)sharedDatabase
{
if (sharedDatabase == nil) sharedDatabase = [FMDatabaseQueue databaseQueueWithPath:DATABASE_PATH];

return sharedDatabase;
}

当我这样调用inDatabase方法时,会导致死锁...

[[UserData sharedDatabase] inDatabase:^(FMDatabase *db) {
FMResultSet * rs = [db executeQuery:@"SELECT id FROM table1"];
if([rs next]) {
[[NSNotificationCenter defaultCenter] postNotificationName:kNotification1 object:aObject userInfo:@{@"key":@1}];
}else{
[[NSNotificationCenter defaultCenter] postNotificationName:kNotification1 object:aObject userInfo:@{@"key":@0}];
}
[rs close];
}];

另一个 Controller 观察通知

- (void)update:(NSNotification *)notification
{
NSNumber *key = [notification.userInfo objectForKey:@"key"];
if ([key isEqual:@1]){
[[UserData sharedDatabase] inDatabase:^(FMDatabase *db) {
[db executeUpdate:@"UPDATE table1 SET number = ?",1];
}];
}
}

谁有解决这个问题的想法...?

最佳答案

执行查询后发送通知怎么样?

__block BOOL result;

[[UserData sharedDatabase] inDatabase:^(FMDatabase *db) {
FMResultSet * rs = [db executeQuery:@"SELECT id FROM table1"];
result = ([rs next]) ? YES : NO;
[rs close];
}];

[[NSNotificationCenter defaultCenter] postNotificationName:kNotification1 object:aObject userInfo:@{@"key":@result}];

关于ios - FM数据库队列死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27643787/

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