小编ble*_*erj的帖子

从桥接头中排除 Swift 类

在一个混合了 Obj-C 和 C++ 的 Swift 项目中,我有一个类扩展了属于第 3 方框架的类。当我编译项目时,编译器抱怨它Cannot find interface declaration for '<Framework Class Name>', superclass of '<My Subclass Name>'

语义错误指向自动生成的桥接头 ('MyProjectName-Swift.h' )。

除了将其标记为私有或文件私有之外,有没有办法将特定类包含在桥接头中?(这使得子类在项目的其余部分没有多大用处。)我已经查看了关于这个问题的 Apple 文档,似乎没有任何具体的方向。

或者,有关如何解决此问题的任何线索?标头包括这一位:

#if __has_feature(modules)
@import UIKit;
@import Material;
@import CoreGraphics;
@import ObjectiveC;
#endif
Run Code Online (Sandbox Code Playgroud)

看起来它应该正确引用超类(在这种情况下,如果重要的话,Material.PresenterCard)但是 - 我很确定这个预编译器指令没有被引用,因为我听说过一个相关的错误。

xcode objective-c swift bridging-header

6
推荐指数
1
解决办法
359
查看次数

For 循环中的 DispatchGroup

所以,我有一段时间试图让 DispatchGroup 在长时间的异步操作完成之前阻止 for 循环进行迭代。我发现的大多数示例都相当简单明了,但我似乎无法让我的简单测试用例按预期工作。

let group = DispatchGroup()

    for i in 1...3 {
        group.enter()
        print("INDEX \(i)")
        asynchronousOperation(index: i, completion: {
            print("HELLO \(i)")
            self.group.leave()

        })
        print("OUTSIDE \(i)")
    }


func asynchronousOperation(index: Int, completion: @escaping () -> ()) {
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+5) {
        print("DONE \(index)")
        completion()

    }
}
Run Code Online (Sandbox Code Playgroud)

这最终打印

START
INDEX 1
OUTSIDE 1
INDEX 2
OUTSIDE 2
INDEX 3
OUTSIDE 3
DONE 1
HELLO 1
DONE 2
HELLO 2
DONE 3
HELLO 3
Run Code Online (Sandbox Code Playgroud)

我原以为它会打印出更像的东西

START
INDEX 1
OUTSIDE 1
HELLO 1
INDEX …
Run Code Online (Sandbox Code Playgroud)

asynchronous grand-central-dispatch swift

3
推荐指数
1
解决办法
1416
查看次数

使用 $pull 删除 MongoDB 中的(子)数组

所以..我正在评估 Mongodb 来管理我的一些 JSON 后端。我对它完全陌生,我在代码中遇到了一个很麻烦的问题,所以我想 - 哎呀 - 让我看看是不是终于开始使用 Mongo 的时候了

我有一个大约是这样的数据结构:

[
{
    "_id" : ObjectId("526f59ee82f2e293f9833c54"),
    "humans" : [
        {
            "serviceUsers" : [
                {
                    "foo1" : "bar2",
                    "foo2" : "bar3"
                },
                {
                    "foo1" : "baz2",
                    "foo2" : "baz3"
                }
            ]
        }
    ]
}
]
Run Code Online (Sandbox Code Playgroud)

现在我想删除“foo1”等于“baz2”的任何serviceUsers数组元素,这样理想情况下我会得到这个:

[
{
    "_id" : ObjectId("526f59ee82f2e293f9833c54"),
    "humans" : [
        {
            "serviceUsers" : [
                {
                    "foo1" : "bar2",
                    "foo2" : "bar3"
                },
            ]
        }
    ]
}
]
Run Code Online (Sandbox Code Playgroud)

我想这$pull是开始的地方。我尝试了一堆扭曲。如果我在收集 mytests,我试过

db.mytests.update({"humans.serviceUsers.foo1":"baz2"}, {$pull:{"humans.serviceUsers" : {"foo1":"baz2"}}}, {multi: …

mongodb

2
推荐指数
1
解决办法
2715
查看次数