小编las*_*sej的帖子

如何在Swift中使用命名空间?

该文档仅提到嵌套类型,但不清楚它们是否可以用作命名空间.我没有发现任何明确提到的命名空间.

macos ios swift

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

Swift变量是原子的吗?

在Objective-C中,您可以区分原子和非原子属性:

@property (nonatomic, strong) NSObject *nonatomicObject;
@property (atomic, strong) NSObject *atomicObject;
Run Code Online (Sandbox Code Playgroud)

根据我的理解,您可以安全地读取和写入从多个线程定义为原子的属性,而同时从多个线程编写和访问非原子属性或ivars可能导致未定义的行为,包括错误的访问错误.

所以如果你在Swift中有这样的变量:

var object: NSObject
Run Code Online (Sandbox Code Playgroud)

我可以安全地并行读取和写入此变量吗?(不考虑这样做的实际意义).

objective-c swift

98
推荐指数
5
解决办法
3万
查看次数

Swift中仅限类的泛型约束

我试图将泛型类型的变量标记为弱:

class X<T> {
  weak var t: T?
}
Run Code Online (Sandbox Code Playgroud)

如果我没有提出任何约束T我得到错误weak cannot be applied to non-class type 'T'.

如果我只使用这个与NSObject派生类,这将工作:

class X<T: NSObject> {
  weak var t: T?
}
Run Code Online (Sandbox Code Playgroud)

但我也希望能够使用纯Swift类.

对于协议,可以通过使用class关键字要求实现者具有类类型:

protocol ClassType: class {
}
Run Code Online (Sandbox Code Playgroud)

根据ClassType协议,我现在可以将变量标记为弱:

class X<T: ClassType> {
  weak var t: T?
}
Run Code Online (Sandbox Code Playgroud)

但我不能class直接将关键字添加到泛型参数:

class X<T: class> { // Compile error
  weak var t: T?
}
Run Code Online (Sandbox Code Playgroud)

我可以使协议解决方案适用于具有扩展名的所有NSObject派生类:

extension NSObject: ClassType {
}
Run Code Online (Sandbox Code Playgroud)

但是对于纯Swift类,我没有可以添加此扩展的常见超类.有没有办法让这项工作没有将ClassType协议添加到我想要使用X该类的每个类?例如,泛型参数的一些特殊限定符如class X<T:ThisIsAClass> …

generics protocols class swift anyobject

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

是否可以下载以前的夜间版本?

我每晚都下载了最新的Rust,并将此依赖项添加到Cargo.toml:

[dependencies.http]

git = "https://github.com/chris-morgan/rust-http.git"
Run Code Online (Sandbox Code Playgroud)

我收到很多错误cargo build:

...
error: aborting due to 7 previous errors
...
error: aborting due to previous error
Could not compile `regex`.
Run Code Online (Sandbox Code Playgroud)

我想这是因为有些依赖项还没有更新到最新的版本.是否可以从昨天或前一天下载每晚?

已安装的版本:

$ rustc --version
rustc 0.13.0-nightly (c89417130 2015-01-02 21:56:13 +0000)
$ cargo --version
cargo 0.0.1-pre-nightly (1a1868b 2014-12-31 21:39:41 +0000)
Run Code Online (Sandbox Code Playgroud)

rust

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

在Swift属性中需要协议和类

在Objective-C中,您可以要求属性的类和其他协议实现:

@property (nonatomic) UIViewController<UISplitViewDelegate> *viewController;
Run Code Online (Sandbox Code Playgroud)

这在Swift中可能吗?从文档中看起来你只需要一个类或一个协议.

swift ios8

17
推荐指数
2
解决办法
1921
查看次数

Vim:导航到编辑历史记录中的上一个和下一个缓冲区

当我编辑多个文件时,我经常想在最后编辑的文件之间来回切换.我知道:bn(ext):bp(revious)在缓冲区之间切换,但它们不保留上次使用的文件的历史记录.相反,他们使用文件打开的顺序.例如,如果我按此顺序打开文件

A, B, C
Run Code Online (Sandbox Code Playgroud)

我的导航历史记录将是

A, B, C, B
Run Code Online (Sandbox Code Playgroud)

然后:在最后一个缓冲区(B)中的bprevious会将我发送给A.是否有一个命令或插件会将我发送给C?我知道Ctrl-6,但这只在最后两个缓冲区之间切换.我想来回多个缓冲区.

vim

16
推荐指数
2
解决办法
4594
查看次数

Swift 4 JSONEncoder 中的字典键顺序

是否可以将 Swift JSON 编码器配置为使用结构体属性的排序顺序作为 JSON 输出中字典键的排序顺序?默认情况下,它使用一些任意(但看似不是随机)的顺序,例如......

struct Example: Codable {
  let id: Int
  let name: String
  let createdAt: Date
  let comments: [String]
}
Run Code Online (Sandbox Code Playgroud)

... 结果是 ...

"example" : {
  "id" : 1,
  "name" : "Test",
  "comments" : [
    "Comment 1",
    "Comment 2"
  ],
  "createdAt" : 549539643.25327206
}
Run Code Online (Sandbox Code Playgroud)

我知道从语义上来说顺序并不重要,但我想保留它以用于调试目的。

json swift codable

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

如果列表顺序更改,SwiftUI NavigationView 中的选择会丢失

这是测试数据模型:

class Item: Identifiable {
  let name: String

  init( n: Int) {
    self.name = "\(n)"
  }
}

class Storage: ObservableObject {
  @Published var items = [Item( n: 1), Item( n: 2)]

  func reverse() {
    items = self.items.reversed()
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的内容视图,其中有一个NavigationLink和一个详细视图,其中有一个反转项目顺序的按钮:

struct ContentView: View {

  @ObservedObject
  var storage = Storage()

  var body: some View {
    NavigationView {
      List {
        ForEach( storage.items) { item in
          NavigationLink( destination: Button( action: {
            self.storage.reverse()
          }) {
            Text("Reverse")
          }) {
            Text( item.name).padding()
          }
        } …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-list swiftui-navigationlink

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