小编mal*_*hal的帖子

我可以在MySQL中为一个表的每一行加入两个只有一个匹配的表吗?

我有一个表,类和另一个我称之为"课程"的表 - 也就是说,某个特定人在特定地方教授的课程.我想拉一个表,基本上只是根据某些课程参数向我显示哪些类是活动的.例如:

CLASSES
class_id|class_name
--------|------------
       1|Class One
       2|Class Two
       3|Different Class
etc...

COURSES
course_id|class_id|room
---------|--------|--------
        1|       3|       1
        2|       3|       2
        3|       1|       1
        4|       3|       1
        5|       3|       2
        6|       2|       1
etc...

我想知道是否有一种方法可以让我只想SELECT classes.* FROM classes JOIN courses ON classes.class_id=courses.class_id WHERE courses.room=1返回每个类的一个实例.发生的事情是我只获得了在1号房间发生的课程,但我得到了每个课程的多个实例,因为在课堂1的课程表中有多个该课程的实例.

我已经尝试了各种不同的JOIN- 左,右,内等 - 而且因为我是根据另一张桌子的规格从一张桌子拉出来的,所以它们似乎都给了我相同的结果.

所以我得到了:

class_id|  class_name  |course_id|room
--------|--------------|---------|--------
       1|Class One     |        3|       1
       2|Class Two     |        6|       1
       3|Diferent Class|        1|       1
       3|Diferent Class|        4|       1
etc...

但我想得到:

class_id|  class_name …

php mysql

5
推荐指数
1
解决办法
9866
查看次数

通过生成已知的过期 CKServerChangeToken 来测试 CKErrorChangeTokenExpired 处理

标题评论指出CKFetchDatabaseChangesOperation fetchDatabaseChangesCompletionBlock

“如果服务器返回CKErrorChangeTokenExpired错误,则该previousServerChangeToken值太旧,客户端应该丢弃其本地缓存并重新获取此记录区域中以 nil 开头的更改previousServerChangeToken。”

我想测试这个场景,因此我想生成一个过期的,CKServerChangeToken这样我就可以将其设置previousServerChangeTokenCKFetchDatabaseChangesOperation.

我从私有标头添加了一个 init 方法:

@interface CKServerChangeToken (Private)
    - (id)initWithData:(NSData *)data;
@end
Run Code Online (Sandbox Code Playgroud)

并按如下方式使用它:

CKServerChangeToken knownExpiredToken = [[CKServerChangeToken alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:@"AQAAAVl57tUGHv6sgNT9EeaTcQCM+sDHHA==" options:0]];
Run Code Online (Sandbox Code Playgroud)

该字符串是从请求返回的有效更改令牌,我尝试修改它但未成功,例如将我看到的递增数字减少到较低的数字。然而,我设法得到了另一个奇怪的无效参数错误,例如缺少连续标记。如果CloudKit工程师有任何建议,我将不胜感激,谢谢。

objective-c ios cloudkit

5
推荐指数
1
解决办法
256
查看次数

SwiftUI Mac OS 如何将选择添加到列表视图

很容易创建一个像这样的简单列表:

List { Text("Item 1") Text("Item 2") Text("Item3") }
Run Code Online (Sandbox Code Playgroud)

但是我如何添加像传统 NSTable 这样的选择?

macos list selection swiftui

5
推荐指数
1
解决办法
2519
查看次数

macOS 上 SwiftUI 的内存泄漏和速度减慢

我的 macOS SwiftUI 应用程序的内存占用量急剧增加且速度变慢。我能够创建一个最小的示例来重现。要重现,请转到 Xcode -> File -> New -> Project -> macOS -> App -> Life Cycle: SwiftUI App 并将其粘贴并替换到*App.swift

import SwiftUI
@main
struct DemoApp: App {
    let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()
    @State var number = 0.0
    
    var body: some Scene {
        WindowGroup {
            List {}
            .toolbar(content: {
                ForEach(1..<100) { _ in
                    Text(String(format: "Time elapsed: %.1f ", number))
                        .font(.system(.body, design: .monospaced))
                }
            })
            .onReceive(timer) { input in
                number += 0.1
            }
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

macos performance memory-leaks swiftui

5
推荐指数
0
解决办法
298
查看次数

我们是否需要在Objective-C中使用弱自我?

我注意到Apple的文档说我们需要在捕获self时避免强大的引用周期.

示例中的块是self的属性.

但是如果我在dispatch_async语句中将块作为局部变量放置怎么办?

在这种情况下,即使我直接调用自我方法,它也不会创建保留周期,对吧?

以下代码是否会在本文中生成weakSelf ?

// your code
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
    __strong typeof(weakSelf) strongSelf = weakSelf;
    if (strongSelf) {
        [strongSelf doThis];
        [strongSelf doThat];
        [Manager.sharedInstance updateSuccessCount];
    }
});

// more code
Run Code Online (Sandbox Code Playgroud)

weak-references objective-c objective-c-blocks retain-cycle

4
推荐指数
1
解决办法
3930
查看次数

SwiftUI 的 List 如何更新选择绑定?

我真的很难理解这是如何List(selection:)导致选择绑定更新的。

我正在https://developer.apple.com/documentation/swiftui/building_a_great_mac_app_with_swiftui上取消选择 Apple 示例代码

该项目是Session2/Part2-End/GardenApp.xcodeproj

左侧有一个侧边栏,右侧有主要细节视图。看起来ContentView像这样:

struct ContentView: View {
    @EnvironmentObject var store: Store
    @SceneStorage("selection") private var selectedGardenID: Garden.ID?
    @AppStorage("defaultGarden") private var defaultGardenID: Garden.ID?

    var body: some View {
        NavigationView {
            Sidebar(selection: selection)
            GardenDetail(garden: selectedGarden)
        }
    }

    private var selection: Binding<Garden.ID?> {
        Binding(get: { selectedGardenID ?? defaultGardenID }, set: { selectedGardenID = $0 })
    }

    private var selectedGarden: Binding<Garden> {
        $store[selection.wrappedValue]
    }
}
Run Code Online (Sandbox Code Playgroud)

和侧边栏是这样的:

struct Sidebar: View {
    @EnvironmentObject var store: Store
    @SceneStorage("expansionState") var …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

4
推荐指数
1
解决办法
2384
查看次数