小编Dáv*_*tor的帖子

可解码符合枚举类型的属性

我有这个枚举:

enum DealStatus:String {
    case PENDING = "Pending"
    case ACTIVE = "Active"
    case STOP = "Stop"
    case DECLINED = "Declined"
    case PAUSED = "Paused"
}
Run Code Online (Sandbox Code Playgroud)

和结构:

struct ActiveDeals: Decodable {
    let keyword:            String
    let bookingType:        String
    let expiryDate:         Int
    let createdAt:          Int?
    let shopLocation:       String?
    let dealImages:         [DealImages]?
    let dealStatus:         String?
    let startingDate:       Int?
}
Run Code Online (Sandbox Code Playgroud)

在结构中我试图将枚举作为类型分配dealStatus如下:

struct ActiveDeals: Decodable {
        let keyword:            String
        let bookingType:        String
        let expiryDate:         Int
        let createdAt:          Int?
        let shopLocation:       String?
        let dealImages:         [DealImages]? …
Run Code Online (Sandbox Code Playgroud)

enums struct swift decodable

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

在特定情况下不调用 deinit

我有以下测试用例:我希望deinit在程序终止时被调用,但它从来没有。我是 Swift 的新手,但不认为这是预期的行为。(这不是在操场上)

class Test
{
   init() {
      print( "init" )
   }

   deinit {
      print( "deinit" )
   }
}

print("Starting app")

var test = Test()

print( "Ending App" )
Run Code Online (Sandbox Code Playgroud)

输出是:

Starting app
init
Ending App
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

如果我将代码放在一个函数中然后调用该函数,我会得到预期的结果

Starting app
init
Ending App
deinit
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

不应该在程序终止时调用对象的 deinit 吗?

automatic-ref-counting swift

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

如何绘制矩形的角(没有连接它们的线)

我有一个CGRect价值,需要在它周围画一个边框。我只希望在没有任何线条连接它们的情况下绘制角落。

像这样的东西...

在此处输入图片说明

我将如何使用 swift 绘制这个数字?

cashapelayer ios uibezierpath swift

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

字符串字典:任何不符合“可解码”协议

我正在尝试实现一个 Decodable 来解析 json 请求,但 json 请求在对象内部有一个字典。

这是我的代码:

    struct myStruct : Decodable {
        let content: [String: Any]
}

        enum CodingKeys: String, CodingKey {
            case content = "content"
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

类型“MyClass.myStruct”不符合协议“Decodable”

如何在没有此错误的情况下将变量声明为字典?

我会非常感谢你的帮助

swift decodable

4
推荐指数
2
解决办法
6308
查看次数

如何让 Mac 应用程序响应命令波浪键快捷方式来切换窗口

在大多数 Mac 应用程序中,可以使用cmd ~快捷键在应用程序的打开窗口之间切换。我也想在我的应用程序中使用它,但我真的不知道如何实现。

大多数快捷键都是通过向菜单项之一添加快捷方式来实现的。但是对于这个菜单项不适用。

macos appkit swift

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

如何在MacOS上的Swift中的下载文件夹中创建目录?权限异常。

我正在努力使用以下代码在macOS上的用户下载目录中简单地创建一个文件夹:

static func createFolderInDownloadsDirectory() {
    let downloadsDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first!
    let downloadsDirectoryWithFolder = downloadsDirectory.appendingPathComponent("FolderToCreate")

    do {
        try FileManager.default.createDirectory(at: downloadsDirectoryWithFolder, withIntermediateDirectories: true, attributes: nil)
    } catch let error as NSError {
        print(error.localizedDescription)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

You don’t have permission to save the file “FolderToCreate” in the folder “Downloads”. 
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

permissions macos cocoa swift

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

使用Int范围生成特定的浮点数组

我想生成一个包含所有Integers的数组和.5带有Int Range的值.结果想要:

min value = 0

max value = 5

generated Array = [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]

我知道如何只得到整数值:

Array(0...5)

但这不是浮动价值的......我认为很清楚,任何人都有想法?

arrays swift

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

如何更改 JSON 键名 Swift?

在我的应用程序中,我使用相同的键名来获取到处的数据,现在在 json 响应中,数据是相同的,但在一个地方键名发生了更改,所以我想重命名 json 中数组的键名,这就是我要搜索的内容关于堆栈溢出但无法找到任何可靠的方法请指导我任何好的方法

{"status":"success","msg":"deleted","pro_data":[]}
Run Code Online (Sandbox Code Playgroud)

我想要带有这些键的 JSON:

{"status":"success","msg":"deleted","Images":[]}
Run Code Online (Sandbox Code Playgroud)

json ios swift swifty-json

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

iOS WatchOS-WatchKit App和WatchKit App extension之间有什么区别?

我正在尝试创建一个iOS WatchOS5并发症,并看到了许多教程和Apple文档。他们谈论:

  • WatchKit应用
  • WatchKit App扩展

iOS WatchKit App和WatchKit App Extension有什么区别?

如果我想在手机应用程序和手表应用程序之间共享数据,是否需要同时使用手表连接框架?

apple-watch watchkit apple-watch-complication watchconnectivity watchos-5

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

二进制运算符'!=='不能应用于两个'MyProtocol'

我创建了一个协议:

public protocol MyProtocol {
  func doTask()
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个MyProtocol类型为元素的数组:

var taskList: [MyProtocol] = []
Run Code Online (Sandbox Code Playgroud)

调用者可以向taskList添加元素,最终,我得到了一个非空的元素taskList.

现在,我需要一个可以删除元素的函数taskList,这是我尝试过的:

func removeTask(task: MyProtocol) {
   // Compiler error: Binary operator '!==' cannot be applied to two 'MyProtocol'
   taskList = taskList.filter{$0 !== task}
}
Run Code Online (Sandbox Code Playgroud)

但我收到编译器错误: Binary operator '!==' cannot be applied to two 'MyProtocol'

如何摆脱这个错误?

===更新===

谢谢@holex,在改成MyProtocol仅限课程后,它运作正常.但现在我想知道我是否需要MyProtocol不仅仅是课堂,那么解决方案是什么呢?

swift swift-protocols

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