小编goh*_*tis的帖子

使用jQuery的对象ID创建一个数组,以便在Django后端上进行处理

我有一些javascript正在创建一个基于AJAX搜索后从后端返回的对象的li.用户可以继续搜索设备,并在选择时将它们添加到当前页面(作为li).每次创建新的li时,我都想发送已经选择的对象的id.

创建li时,它们的id被命名为"device - ###",其中###是数据库中设备的ID,因此我需要删除该部分.

这是给我问题的javascript:

        var children = $('#temp_inventory').children();
        var count = children.length;
        var devices = [];
        var i = 0;
        while (i<=count){
            devices[i] = children[i].id.substr(4);
            i++;
        };
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Uncaught TypeError: Object #<HTMLLIElement> has no method 'attr'
Run Code Online (Sandbox Code Playgroud)

我也尝试了非jQuery方式:

devices[i] = children[i].id.substr(4);
Run Code Online (Sandbox Code Playgroud)

我最终得到了这个错误:

Uncaught TypeError: Cannot read property 'id' of undefined
Run Code Online (Sandbox Code Playgroud)

当我投入时,alert(children[i].id.substr(4));我得到了一个我正在期待的号码的警报.

javascript arrays django jquery

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

在Apple Watch和iPhone上使用SwiftUI进行设备特定的布局

有时,我需要对设备进行特定于布局的调整。例如,我可能需要减小屏幕较小的iPhone上的间距,或者增大屏幕较大的iPhone上的间距。使用UIKit(甚至是Interface Builder),可以很容易地为特定尺寸的类设置布局例外。使用SwiftUI进行条件特定于设备的布局的最佳方法是什么?

我一直在搜索SwiftUI文档,但是还没有找到在布局中访问和使用此类信息的方法。

以下是Apple Watch应用的示例。根据Apple的设计准则,我在40mm Series 4的左侧和右侧添加了8.5点填充。但是,44mm的填充应为9.5点,任何比Series 4早的Apple Watch都应没有填充。

SwiftUI实现此目标的最佳方法是什么?

struct ContentView : View {

    var body: some View {
        HStack {
            Text("Hello World")
        }.padding([.horizontal], 8.5)
    }
}
Run Code Online (Sandbox Code Playgroud)

ios apple-watch watchos swiftui

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

使用 SwiftUI 切换更改的动画

我正在构建一个简单的设置屏幕。

当第一个设置被激活时,速度控制出现。当它关闭时,速度控制消失。

根据我对 SwiftUI 的了解,它应该根据下面的代码自动设置动画,但它只是出现和消失。

我怎样才能用 SwiftUI 使这个动画更好看,让它从它上面的单元格滑下来,就像在这个演示文稿中 53:00 一样?

设置动画的GIF

import SwiftUI
import Combine

struct ContentView : View {

    @ObjectBinding var settingsStore: SettingsStore

    var body: some View {
        NavigationView {
            Form {
                Toggle(isOn: $settingsStore.settingActivated.animation(.basic(duration: 3, curve: .easeInOut))) {
                    Text("Setting Activated")
                }
                if settingsStore.settingActivated {
                    VStack(alignment: .leading) {
                        Text("Speed Control")
                        HStack {
                            Image(systemName: "tortoise")
                            Slider(value: .constant(10), from: 0, through: 50, by: 1)
                            Image(systemName: "hare")
                        }
                    }.transition(.opacity)
                }
            }.navigationBarTitle(Text("Settings"))
        }
    }
}

class SettingsStore: BindableObject {

    let didChange = PassthroughSubject<Void, …
Run Code Online (Sandbox Code Playgroud)

ios swiftui combine

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

从配对的 iPhone 确定 Apple Watch 电池电量

在 Apple Watch 上,我可以通过设置WKInterfaceDevice.current().isBatteryMonitoringEnabled = true然后检查WKInterfaceDevice.current().batteryLevel和来检查我的 WatchKit 扩展程序中的电池电量和充电状态WKInterfaceDevice.current().batteryState

虽然WKInterfaceDevice.current()对象是可用的iOS上的isBatteryMonitoringEnabledbatteryLevelbatteryState性质都没有。

有没有人知道从 iOS 访问配对 Apple Watch 的电池电量和充电状态的方法?

似乎有可能因为 Apple 的电池小部件显示配对 Apple Watch 的当前电量和充电状态,尽管这可能使用私有 API,因为它是内置于 iOS 的小部件。

有关更多上下文,请参阅有关我在 Medium 上尝试完成的工作帖子

ios apple-watch watchkit

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

watchOS 上 SwiftUI 中的 WKInterfaceController.didAppear() 等效项是什么?

我正在构建一个 Apple Watch 应用程序,并且每次应用程序进入前台时我都想运行一些代码。

以前,如果我想在带有 的 watchOS 中执行此操作WKInterfaceController,我会将此代码放入didAppear().

在 SwiftUI 中,有onAppear(),但是当我在 watchOS 上调用它时,它似乎只在应用程序第一次加载时被调用,所以它的行为就像相反WKInterfaceController.willActivate()。该应用程序只有一个视图。

如果onAppear()相当于WKInterfaceController.willActivate(),是否有其他 SwiftUI 函数相当于WKInterfaceController.didAppear()

这是我当前的示例代码:

import SwiftUI

struct ContentView: View {

    var body: some View {

        Text("Hello World").font(.footnote)
            .onAppear {
                print("onAppear called")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

与此同时,我将尝试触发我需要在 中执行的操作ExtensionDelegate,但我只是想了解 WatchOS 上的 SwiftUI,因此知道这个问题的答案会对将来有所帮助。

watchos swiftui

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

如何诊断和解决 WCSession sendMessage(_:replyHandler:errorHandler:) 上的崩溃?

我正在构建一个 watchOS 应用程序,它需要定期从配套的 iPhone 应用程序请求信息以刷新复杂功能。

为了实现这一点,我有一个WKApplicationRefreshBackgroundTask定期运行的。它使用sendMessage(_:replyHandler:errorHandler:)fromWatchConnectivity从 iPhone 应用程序请求信息、处理回复并更新复杂功能。

大多数情况下,这对许多用户来说都是可靠的,但是,我在 Xcode 中看到 Apple Watch 崩溃sendMessage(_:replyHandler:errorHandler:),我担心这会导致用户错过复杂功能更新。一些用户一直在抱怨复杂功能没有更新,因此我试图确定是否存在复杂功能在 watchOS 中刷新频率的常规限制之外的问题。

有没有人对我如何解决这个问题有任何建议?或者,您对我如何更好地解决导致崩溃的问题并找出预防方法有什么建议吗?

我在底部包含了一个崩溃的完整示例,以及处理后台任务的代码和处理从配对 iPhone 发送和接收值的代码。

我从不发送没有replyHandler 的消息,所以虽然其他人看到了问题,因为没有处理程序的消息的委托方法没有在 iPhone 上实现,但我认为这不是这里的问题。为了安全起见,我在 iPhone 上将委托方法实现为一个什么都不做的空方法。

2020 年 1 月 30 日更新:一位朋友建议,问题可能是该任务在仍在进行中时被 10 秒计时器标记为完成,从而在未完成的事情完成时导致内存问题,但不确定可以做什么关于它。也许这是这里问题的核心?

这是我的后台刷新代码ExtensionDelegate

func handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) {
    for task in backgroundTasks {
        switch task {
        case let backgroundTask as WKApplicationRefreshBackgroundTask:

            // set a timer in case it doesn't complete
            // the …
Run Code Online (Sandbox Code Playgroud)

ios watchkit watchos watchconnectivity wcsession

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

在完全自动反转重复周期之间延迟 SwiftUI 中的重复动画

我\xe2\x80\x99m 在 SwiftUI 中构建了一个 Apple Watch 应用,该应用读取用户\xe2\x80\x99 的心率并将其显示在心形符号旁边。

\n

我有一个动画可以让心形符号反复跳动。因为我知道实际的用户\xe2\x80\x99s心率,所以我\xe2\x80\x99d喜欢让它以与用户\xe2\x80\x99s心率相同的速率跳动,每次速率更新动画变化。

\n

我可以通过将心率除以 60 来确定节拍之间应间隔多少秒。例如,如果用户\xe2\x80\x99s 的心率为 80 BPM,则动画应每 0.75 秒 (60/80) 发生一次。

\n

这是我现在拥有的示例代码,其中currentBPM是一个常量,但通常会更新。

\n
struct SimpleBeatingView: View {\n    \n    // Once I get it working, this will come from a @Published Int that gets updated any time a new reading is avaliable.\n    let currentBPM: Int = 80\n    \n    @State private var isBeating = false\n    \n    private let maxScale: CGFloat = 0.8\n    \n    var beatingAnimation: Animation {\n        \n        // …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

我如何验证iPhone应用程序并向Django后端发出请求以绕过CSRF?

我和一个没有任何Django经验的iPhone开发人员合作,而且我对Django来说比较新.我已经构建了一个带有Web界面的现有Django应用程序,允许用户登录并将我们数据库中的书籍添加到他的个人库中.

我们正在尝试构建一个允许用户进行身份验证和访问库的iPhone应用程序,我想知道进行身份验证的最佳方法是什么,然后请求用户的库.我们开始使用HTTP POST请求将凭据发送到Django应用程序,但我知道的另一个Django开发人员告诉我这将是一个跨域请求,从Django 1.2开始无法工作.

如果我无法进行跨域HTTP POST请求,我应该如何将数据从iPhone应用程序发布到Django应用程序?

iphone authentication django post django-csrf

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

我应该如何触发 SwiftUI 应用程序中的网络调用以刷新应用程序打开时的数据?

我正在编写一个 SwiftUI 应用程序,我希望它定期从服务器刷新数据:

  • 首次打开应用程序时
  • 如果应用进入前台并且数据在过去 5 分钟内没有更新

下面是我到目前为止的代码。

首次在 SwiftUI 应用程序中打开应用程序时,触发此更新代码的最佳方法是什么?添加观察者是否是onAppear在应用程序进入前台时触发更新的好习惯?(这是应用程序中的唯一视图)

class InfoStore {

    var lastValueCheck: Date = .distantPast
}

struct ContentView : View {

    var infoStore: InfoStore

    private func updateValueFromServer() {

        // request updated value from the server

        // if the request is successful, store the new value

        currentValue = 500
        UserDefaults.cachedValue = 500
        // hardcoded for this example

        infoStore.lastValueCheck = Date()
    }

    private func updateValueIfOld() {

        let fiveMinutesAgo: Date = Date(timeIntervalSinceNow: (-5 * 60))

        if infoStore.lastValueCheck …
Run Code Online (Sandbox Code Playgroud)

ios swiftui

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

使用Combine和SwiftUI显示变化的值的最简洁方法是什么?

我想把我的头围绕SwiftUI和Combine。我想用一个值使UI中的一些文本保持最新。在这种情况下,例如,这是设备的电池电量。

这是我的代码。首先,似乎这是完成我想做的事情的大量代码,所以我想知道如果没有其中的一些我是否可以做到。另外,该代码过去通常在夏天运行,但现在崩溃了,可能是由于SwiftUI和Combine的更改。

如何解决此问题以使其与当前版本的SwiftUI和Combine一起使用?而且,是否有可能减少此处的代码量以执行相同的操作?

import SwiftUI
import Combine

class ViewModel: ObservableObject {

    var willChange = PassthroughSubject<Void, Never>()

    var batteryLevelPublisher = UIDevice.current
        .publisher(for: \.batteryLevel)
        .receive(on: RunLoop.main)

    lazy var batteryLevelSubscriber = Subscribers.Assign(object: self,
                                                         keyPath: \.batteryLevel)

    var batteryLevel: Float = UIDevice.current.batteryLevel {
        didSet {
            willChange.send()
        }
    }

    init() {
        batteryLevelPublisher.subscribe(batteryLevelSubscriber)
    }
}

struct ContentView: View {

    @ObservedObject var viewModel = ViewModel()

    var body: some View {
        Text("\(Int(round(viewModel.batteryLevel * 100)))%")
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui combine

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

防止 SwiftUI 动画覆盖嵌套的 withAnimation 块

我有一个带有可拖动组件(“Springy”文本)的屏幕,当它以非常突出的弹簧动画释放时会弹回。

有一些文本异步Timer传入(在本例中,使用 a ),我希望它在 Springy 标签平滑向上移动以为其腾出空间时很好地淡入。

示例代码截图

我向 VStack 添加了一个动画,当异步加载的文本淡入时,它会按照我想要的方式转换。但是,这会破坏“弹性”文本上的弹簧动画。

这里注释掉了一个动画,如果将 1 秒动画切换到异步加载的文本淡入的那个位置,但就在动画的开头,“弹性”文本会跳起来而不是向上滑动。

我怎样才能让两个动画按照我的意愿工作?

import SwiftUI
import Combine

class Store: ObservableObject {
    @Published var showSection: Bool = false
    
    private var cancellables: [AnyCancellable] = []
    
    init() {
        
        Timer
            .publish(every: 2, on: RunLoop.main, in: .common)
            .autoconnect()
            .map { _ in true}
            .assign(to: \.showSection,
                    on: self)
            .store(in: &cancellables)
    }
}

struct ContentView: View {
    
    @ObservedObject var store = Store()
    
    @State var draggedState = CGSize.zero
    
    var body: some View {
        VStack {
            Spacer() …
Run Code Online (Sandbox Code Playgroud)

ios swiftui swiftui-animation

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

我如何解散由contextForSegue呈现的WKInterfaceController?

我有一个WKInterfaceControllerWKInterfaceTable其中列出了用户在我的应用中记录的一些事件。

用户可以点击表的一行以查看有关该事件的更多详细信息。为此,我覆盖contextForSegue(withIdentifier:in:rowIndex:)WKInterfaceController包含该表的,因此,轻按一行以一种WKInterfaceController名为的新形式呈现该行的详细视图EventDetailController

modal演示文稿在情节提要中定义。我无法使用push演示文稿,因为WKInterfaceController带有的WKInterfaceTableWKInterfaceController应用程序顶层多个实例之间的页面。

这是主要问题:

在中EventDetailController,有一个Delete按钮可以销毁表行代表的记录。

当用户点击“ 删除”按钮时,我会显示一条警报,允许用户确认或取消删除操作。

用户确认记录删除后,EventDetailController由于它不再相关,因此我想将其删除,因为它代表已删除的记录。

点击“ 删除”按钮时,将调用以下IBAction定义:EventDetailController

@IBAction func deleteButtonTapped(_ sender: WKInterfaceButton) {

    let deleteAction = WKAlertAction(title: "Delete", style: .destructive) {

        // delete the record

        // as long as the delete was successful, dismiss the detail view
        self.dismiss()
    }

    let cancelAction = WKAlertAction(title: "Cancel", …
Run Code Online (Sandbox Code Playgroud)

watchkit wkinterfacetable watchos wkinterfacecontroller

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