小编dan*_*ing的帖子

Xcode Swift 包管理器错误 - 找不到存储库

我找不到任何关于此的 SO 问题,但我遇到过两次这个问题。基本上,当我尝试通过 SPM 添加新包时,有时会收到以下错误:

The repository could not be found. Make sure a valid repository exists at the specified location and try again.
Run Code Online (Sandbox Code Playgroud)

例如,我正在尝试获取 PanModal ( https://github.com/slackhq/PanModal ),我得到以下信息:

在此处输入图片说明

特别有趣的是,虽然 Xcode 声称未找到 repo,但它可以在上一个屏幕上发现它的版本:

在此处输入图片说明

这里有什么问题?可以说 PanModal 刚刚获得了 SPM 支持,但那是 15 小时前,我认为这应该足够了。iiuc SPM 也是分散的,所以不应该有缓存或注册表的东西妨碍?

谢谢!

xcode swift swift-package-manager

10
推荐指数
5
解决办法
3218
查看次数

Swift @escaping 仅适用于非空函数参数?

我从来没有真正理解何时使用@escaping。我理解它的作用(即转义闭包和非转义闭包之间的区别),但tbf我一直依赖Xcode来告诉我何时将修饰符添加到我的参数中。

我的问题是,为什么这种情况@escaping只适用于非零闭包?这就是我的意思:

func someFunc(someArg: Int, callback: @escaping (Error?) -> Void) {
    DispatchQueue.global(qos: .background).async {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面,如果我不添加@escapingXcode 会给我一个错误。但是,如果我callback像下面这样设置可选,则将结果保留 @escaping在 Xcode 错误中:

// This is wrong (Xcode complains about @escaping)
func someFunc(someArg: Int, callback: @escaping ((Error?) -> Void)?) {
    DispatchQueue.global(qos: .background).async {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?谢谢你!

ios swift

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

何时为Swift中的视图/图层设置边界和框架?

我在UIView子类中有类似的东西:

override var bounds : CGRect {
  didSet {
    somelayer.frame = bounds
  }
}
Run Code Online (Sandbox Code Playgroud)

在相应的somelayer,我有这个:

override var bounds: CGRect {
  didSet {
    someFunction()
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果使用初始化视图super.init(frame: someFrame),则不会调用第一个块.这似乎表明该bounds物业并未设置frame.

如果我改变了第一块override var frame,那么它将被称为super.init(frame: someFrame),这将设置framesomelayer.有趣的是,当发生这种情况时,会调用第二个块,这表明bounds并且frame同时设置(这也是我所期望的).

我在这里错过了什么吗?

calayer uiview ios swift

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

在故事板中使用材质样式时,iOS 13.0 警告之前的系统模糊样式

我正在尝试使我的应用程序适应 iOS 13 暗模式,当我将 UIVisualEffectView 的模糊设置为 Storyboard 中的任何新模式(如材质)时,我收到警告:

System blur style before iOS 13.0
Run Code Online (Sandbox Code Playgroud)

我理解这一点,并且我可以在代码中使用版本检查来支持 iOS 13 和以前的版本。但是,我不确定如何在 Storyboard(我更喜欢)中执行此操作,并且当我在 iOS 12 设备中运行该应用程序时,它实际上呈现良好(正确回退)。

我怎样才能摆脱警告?

谢谢!

storyboard ios uivisualeffectview ios-darkmode

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

如何在iOS 13中使用麦克风图标创建搜索栏?

在iOS 13中,所有Apple应用程序中的搜索栏在右侧都有一个麦克风图标,允许语音输入。但是,当我创建系统搜索栏(或UISearchController)时,没有得到麦克风图标。我在Google和SO上进行搜索,但找不到答案-我们可以采用它吗?如果可以,怎么办?

accessibility uisearchbar ios ios13

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

无法在Swift中释放由CGPathCreateMutable创建的路径

我在Swift中有这个简单的代码:

override var bounds : CGRect {
  didSet {
    if (bounds != oldValue) {
      var path = CGPathCreateMutable()
      CGPathAddEllipseInRect(path, nil, bounds)
      self.path = path
      CGPathRelease(path)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

当图层bounds发生变化时,它应该绘制一个填充图层的圆圈.

这是从我的旧Objective-C代码移植而来的,它运行正常:

- (void)setBounds:(CGRect)bounds
{
  if (CGRectEqualToRect(self.bounds, bounds)) return;

  super.bounds = bounds;
  CGMutablePathRef path = CGPathCreateMutable();
  CGPathAddEllipseInRect(path, nil, bounds);
  self.path = path;
  CGPathRelease(path);
}
Run Code Online (Sandbox Code Playgroud)

但是,Swift代码崩溃了一些段错误.如果我不释放路径,那很好.如果我没有设置self.path = path,它也没关系(虽然没有任何东西会显示出来).如果两者都存在,它将崩溃.

我确实认为通过CGPathCreateMutable()需要释放创建的路径..而且似乎是ObjC的情况.有谁知道为什么它在Swift中不起作用?或者我做错了什么?

谢谢!

calayer cgpath swift

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