小编Jos*_*osh的帖子

等到swift for循环,异步网络请求完成执行

我希望for循环向firebase发送一堆网络请求,然后在方法完成执行后将数据传递给新的视图控制器.这是我的代码:

var datesArray = [String: AnyObject]()

for key in locationsArray {       
    let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)")
    ref.observeSingleEventOfType(.Value, withBlock: { snapshot in

        datesArray["\(key.0)"] = snapshot.value
    })
}
// Segue to new view controller here and pass datesArray once it is complete 
Run Code Online (Sandbox Code Playgroud)

我有几个问题.首先,我如何等待for循环完成并且所有网络请求都已完成?我无法修改observeSingleEventOfType函数,它是firebase SDK的一部分.另外,我是否会通过尝试从for循环的不同迭代中访问datesArray来创建某种竞争条件(希望这是有道理的)?我一直在阅读有关GCD和NSOperation的内容,但我有点失落,因为这是我构建的第一个应用程序.

注意:Locations数组是一个包含我需要在firebase中访问的键的数组.此外,重要的是异步触发网络请求.我只想等到所有异步请求完成后再将datesArray传递给下一个视图控制器.

asynchronous nsoperation grand-central-dispatch swift

138
推荐指数
7
解决办法
6万
查看次数

如何将 Firebase 存储桶的内容从一个项目复制到另一个项目?

我正在使用 firebase 存储来存储个人资料图片。我创建了两个项目:MyApp 和 MyApp-Dev。我可以轻松地从 MyApp 数据库下载 json 数据并将其上传到 MyApp-Dev 数据库。有没有办法做一些类似的事情来将图像从一个项目转移到另一个项目?如果没有用户的个人资料图片,测试 MyApp-Dev 会变得非常困难。

firebase firebase-storage

8
推荐指数
2
解决办法
1639
查看次数

UITableView 单元格显示不正确的图像,即使将图像设置为 nil 作为 tableView.dequeueReusableCell 中的第一步

我正在尝试做一些非常基本的事情,但在其他类似问题中提出的修复似乎不起作用。我有一个图像缓存和一个 tableView。如果存在,我想显示缓存中的图像,否则应该什么都没有。出于某种原因,即使我将图像视图设置为 nil,tableView 仍然显示带有错误图像的重用单元格。下面是我的代码:

let cell = tableView.dequeueReusableCell(withIdentifier: "searchCell", for: indexPath) as! SearchResultsTableViewCell

    cell.profilePhoto?.image = nil
    cell.profilePhoto?.backgroundColor = UIColor.gray
    if let userID = myObject.posterId, let profileImage = self.imageCache.object(forKey: userID as AnyObject) {
        cell.profilePhoto?.image = profileImage
    } else {
        if let userId = myObject.posterId {
            downloadImage.beginImageDownload() {
                (imageOptional) in
                if let image = imageOptional {
                    cell.profilePhoto?.image = image
                    self.imageCache.setObject(image, forKey: userId as AnyObject)
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我一生都无法弄清楚为什么图像没有被设置为零,即使我这样做是第一步!

uitableview ios swift

5
推荐指数
2
解决办法
1294
查看次数

如何反向运行react-spring 动画?

我有一个动画,可以很好地从右侧移动项目并从左侧移动项目。我想在单击后退按钮时执行相反的操作,类似于从移动应用程序中的导航堆栈中弹出视图。我的代码如下,如何让动画在单击按钮时向后运行?我正在使用 React 17.0.2 和 react-spring 9.2.3 。

import React, { useState, useCallback, CSSProperties, useEffect } from "react";
import {
  useTransition,
  animated,
  AnimatedProps,
  useSpringRef,
} from "react-spring";

import styles from "../styles/components/carousel.module.css";

const Carousel: React.FC = () => {
  const [index, set] = useState(0);
  const onClick = useCallback(() => set((state) => (state + 1) % 6), []);
  const transRef = useSpringRef();
  const transitions = useTransition(index, {
    ref: transRef,
    keys: null,
    from: { opacity: 0, transform: "translate3d(100%,0,0)" },
    enter: { opacity: 1, transform: …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs react-spring

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

在Firebase iOS SDK中,每次删除子项时都会触发.childAdded.我怎么能阻止这个?

我将一些数据存储在Firebase数据库中名为"notifications"的节点下.当我向"通知"添加事件观察器并将事件类型设置为".childAdded"时,每次将子项添加到"通知"节点时都会调用完成处理程序,并且每次从"通知"节点删除子项时.首先,我不明白为什么会发生这种情况,因为没有添加任何内容,只是删除了.有没有办法避免这种情况?

如果我无法避免每次删除子项时都执行.childAdded块,那么是否有人检测到它实际上是子删除事件而不是子事件添加事件?如果事件被删除,我想从函数中提前返回.以下是我的参考代码:

//Event observer for notifications 
notificationsReference.queryLimited(toLast: 1).observe(.childAdded, with: {
        (snapshot) in

        //Do some stuff here only on .childAdded 
        //If the event was child deleted, do nothing 
})
Run Code Online (Sandbox Code Playgroud)

ios firebase swift firebase-realtime-database

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

如何在工作时间内在Google App Engine cron.yaml上执行cron作业?

我已经阅读了文档,但是在如何做到这一点上我抓狂了。我想在上班时间进行cron工作。所以我的cron.yaml看起来像:

cron:
- description: My Cool Cron Job 
  url: /myCoolCronJob.php 
  schedule: every 5 minutes from 06:00 to 19:00 every monday, tuesday, wednesday, thursday, friday
  timezone: America/Los_Angeles
Run Code Online (Sandbox Code Playgroud)

显然,那是行不通的。但这应该使您对我想做的事情有所了解。我如何使该Cron作业在工作时间内运行?

cron google-app-engine

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

如何从 AWS Amplify GraphQL API 删除多条记录?

我在 AWS Amplify React Native 应用程序中创建了 GraphQL API。API 包含模型Transaction。AWS Amplify 提供开箱即用的 CRUD 操作,我可以毫无问题地删除单个事务。

但是,我想删除所有符合特定条件的交易。如何使用此堆栈(AWS Amplify + GraphQL API、React Native)删除多个事务?

aws-amplify

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