小编Rob*_*Rob的帖子

如何在Swift中从负数更改为零

我有Double数据类型,因为我需要带有浮点数的结果,但是如果我的结果是否定的,则会破坏我的所有算法.是否可能存在具有浮点的无符号数据类型?

在此输入图像描述

unsigned-long-long-int swift negative-zero

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

Dispatch.main.async如何"更新UI"?

我一直在使用Swift一段时间,而GCD仍然让我感到困惑.

我读了:

https://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1

以及关于发送的Apple文档:

https://developer.apple.com/documentation/dispatch

我理解GCD允许在不同线程上运行多个任务的整体概念(我认为是正确的).

我不太明白的是Dispatch.main.async"更新UI".

例如,如果我在某处调用api并返回数据 - 比如返回所有数据需要5秒钟,那么如何使用Dispatch.main.async帮助更新UI?如何Dispatch.main.async知道要更新的UI?

而且我仍然不能完全取代GCD,为什么不能在加载所有数据时使用某种观察者或委托或闭包?

如果我正在进行api调用但不立即使用数据,请重新:用GCD"更新UI".只是将数据存储在一个数组中,直到我决定使用它,那么是否需要使用Dispatch.main.async

我现在一直在使用firebase/firestore作为数据库.Firebase拥有自己的侦听器并以异步方式运行.我仍然无法得到一个很好的答案:在iOS/Swift中处理来自firebase的异步返回的最佳方法.例如,当我的应用程序加载,如果我去firebase获取数据来填充tableviewcontroller,什么是知道所有数据何时返回的最佳方式?我一直在使用代表,但想知道是否以及如何Dispatch.main.async使用.

grand-central-dispatch firebase swift

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

UIBezierPath - 波形/噪声数据的平滑图表

我的目标是在用户在屏幕上滑动时实现类似Adobe Illustrator的行.目前它非常不稳定 - 这是当前情况的截图:

嘈杂的线条

我认为这显然是我想要的.我希望平滑这些直线.这叫做抗锯齿吗?

- (void)touchesBegan: (CGPoint)point
{
    currentStroke = [[Stroke alloc] initWithStartPoint:point];
    [strokes addObject:currentStroke];
}

- (void)touchesMoved: (CGPoint)point
{
    if (!currentStroke) {
        [self touchesBegan:point];
    }
    [currentStroke.points addObject:[NSValue valueWithCGPoint:point]]
    pathTwo = [self createPath];
    [self scaleToFit];
    [self setNeedsDisplay];
}

- (UIBezierPath *)createPath {
    UIBezierPath * bezierPath = [UIBezierPath bezierPath];
    for (Stroke * stroke in strokes) {
        [bezierPath moveToPoint:stroke.startPoint];
        for (NSValue * value in stroke.points) {
            [bezierPath addLineToPoint:[value CGPointValue]];
        }
    }
    return bezierPath;
}

- (void)touchesEnded: (CGPoint)point
{
    [points removeAllObjects];
    [self …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uibezierpath

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

在此代码段中,“ DispatchQueue.main.async”和“ completed:@escaping()->()”是什么意思?

基本上,这是一个简单的项目,涉及一个表视图,该表视图根据从api的JSON解析的数据进行更新。我相信DispatchQueue.main.asynccompleted: @escaping () -> ()有事情做与更新/重装tableview中,但我不知道它是如何工作的。对于这两个功能的解释将不胜感激。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    var heroes = [HeroStats]()

    override func viewDidLoad() {
        super.viewDidLoad()
        fetchData {
            print("Success")
        }
    }

    func fetchData(completed: @escaping () -> ()) {

        let jsonUrlString = "https://api.opendota.com/api/heroStats"
        guard let url = URL(string: jsonUrlString) else { return }

        URLSession.shared.dataTask(with: url) { (data, response, error) in

            guard let data = data else { return }

            if error == nil {
                do {
                    let heroes …
Run Code Online (Sandbox Code Playgroud)

closures grand-central-dispatch ios swift

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

Swift 5,发出http post请求

邮差

如何在 Swift 5 上进行附加的“邮递员操作”?我想使用此代码在 ios(iphone) 上使用休息服务登录。

post http request postman swift

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

UISearchBar 设置 UITextField 焦点

我有一个像 Facebook 这样的应用程序(iOS7),菜单滑动并在右侧幻灯片上进行搜索。\n我想要的是当被viewDidLoad调用时,将焦点设置在UITextField搜索栏上并显示键盘。

\n\n

我\xe2\x80\x99已经尝试过以下操作:

\n\n
for (id object in [[self.searchDisplayController searchBar] subviews])\n{\n    for (id subObject in [object subviews])\n    {\n        if ([subObject isKindOfClass:[UITextField class]])\n        {\n            UITextField *textfield=(UITextField*)subObject;\n            [textfield becomeFirstResponder];\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但没有成功。

\n\n

有任何想法吗?

\n

focus uitextfield searchbar ios7

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

从swift4中的时区获取日期和时间

我有一个时区String类型,我想在 Swift 4 中的这个时区获取日期(带格式dd:mm:yyyy)和时间(带格式hh:mm:ss)。我该怎么做?

我看过日历库,但我不明白如何查看它来解决我的问题。

time timezone date swift swift4

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

我们什么时候应该使用信号量 vs 调度组 vs 操作队列?

我们什么时候应该使用信号量 vs 调度组 vs 操作队列?

我的理解是:

使用信号量:当多个线程想要访问共享资源时。

Use Dispatch Group:当你想要的时候,你应该在所有线程(被添加到调度组)完成它们的执行后得到通知。

使用操作队列:当您希望操作 C 应在 A 和 B 完成执行后开始时。所以 A 和 B 依赖于 C。

我的理解是否正确?

multithreading ios swift

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

如何使用 Swift 对 TableView 的行进行编号

我正在尝试对 TableView 的行进行编号,以便每个单元格使用 Swift 显示其编号。

例如:第一个单元格显示 1,第二个单元格显示 2,依此类推...

示例图像

arrays uitableview ios swift

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

var 数组和 let 数组的区别?

我正在 Swift 中学习数组,在我的书中他们首先写道:

let numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

但是然后写:

var numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我知道这let表示常量var指代变量,但实际上声明为常量的数组和声明为变量的数组有何不同?

arrays xcode var let swift

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

iOS Swift 圆形图表

对于如何为 iOS Swift 实现以下进度表有什么建议吗?

在此输入图像描述

charts swift

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