我有这个枚举:
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) 我有以下测试用例:我希望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 吗?
我正在尝试实现一个 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”
如何在没有此错误的情况下将变量声明为字典?
我会非常感谢你的帮助
在大多数 Mac 应用程序中,可以使用cmd ~快捷键在应用程序的打开窗口之间切换。我也想在我的应用程序中使用它,但我真的不知道如何实现。
大多数快捷键都是通过向菜单项之一添加快捷方式来实现的。但是对于这个菜单项不适用。
我正在努力使用以下代码在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)
我怎样才能解决这个问题?
我想生成一个包含所有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)
但这不是浮动价值的......我认为很清楚,任何人都有想法?
在我的应用程序中,我使用相同的键名来获取到处的数据,现在在 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) 我正在尝试创建一个iOS WatchOS5并发症,并看到了许多教程和Apple文档。他们谈论:
iOS WatchKit App和WatchKit App Extension有什么区别?
如果我想在手机应用程序和手表应用程序之间共享数据,是否需要同时使用手表连接框架?
apple-watch watchkit apple-watch-complication watchconnectivity watchos-5
我创建了一个协议:
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 ×9
decodable ×2
ios ×2
macos ×2
appkit ×1
apple-watch ×1
arrays ×1
cashapelayer ×1
cocoa ×1
enums ×1
json ×1
permissions ×1
struct ×1
swifty-json ×1
uibezierpath ×1
watchkit ×1
watchos-5 ×1