enum PostType: Decodable {
init(from decoder: Decoder) throws {
// What do i put here?
}
case Image
enum CodingKeys: String, CodingKey {
case image
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能完成这个?另外,让我说我改变了case这个:
case image(value: Int)
Run Code Online (Sandbox Code Playgroud)
如何使其符合Decodable?
编辑这是我的完整代码(不起作用)
let jsonData = """
{
"count": 4
}
""".data(using: .utf8)!
do {
let decoder = JSONDecoder()
let response = try decoder.decode(PostType.self, from: jsonData)
print(response)
} catch {
print(error)
}
}
}
enum PostType: Int, Codable {
case count = 4
}
Run Code Online (Sandbox Code Playgroud)
最终编辑 另外,它将如何处理这样的枚举?
enum …Run Code Online (Sandbox Code Playgroud) 这是我的代码.但我不知道该如何设定价值.它必须手动完成,因为实际结构比这个例子稍微复杂一些.
有什么帮助吗?
struct Something: Decodable {
value: [Int]
enum CodingKeys: String, CodingKeys {
case value
}
init (from decoder :Decoder) {
let container = try decoder.container(keyedBy: CodingKeys.self)
value = ??? // < --- what do i put here?
}
}
Run Code Online (Sandbox Code Playgroud) 我正在试验 SwiftUI。我不知道如何获得带边框宽度的圆形按钮。下面是我尝试过的代码。
这是我的代码
struct ArrowButton : View {
var body: some View {
return Button(action: {}) {
HStack {
Text("SEE ALL")
.font(.headline)
.color(Color.init(red: 0.627, green: 0.776, blue: 0.965))
Image(systemName: "arrow.right")
.font(Font.title.weight(.bold))
}
}
.padding(.all, 9.0)
.border(Color.init(red: 0.627, green: 0.776, blue: 0.965))
.cornerRadius(5.0)
}
}
Run Code Online (Sandbox Code Playgroud)
我应该使用什么修饰符
我发现Text使用自定义设计创建Label的SwiftUI 视图非常容易。因此,我想将其用作常规UIKit UICollectionViewCell的视图。
到目前为止,这是我的代码(您可以在Xcode 11中复制和粘贴)。
import SwiftUI
import UIKit
struct ContentView: View {
var body: some View {
CollectionComponent()
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
struct CollectionComponent : UIViewRepresentable {
func makeCoordinator() -> CollectionComponent.Coordinator {
Coordinator(data: [])
}
class Coordinator: NSObject, UICollectionViewDataSource, UICollectionViewDelegate {
var data: [String] = []
init(data: [String]) {
for index in (0...1000) {
self.data.append("\(index)")
}
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在SwiftUI中显示弹出窗口。我已经准备好了,但是有没有办法使我的popoverView出现在我单击的位置?为此,我认为我需要获取鼠标位置。我该怎么做呢?
我有一个???????
用泰语写的单词 - > 如何使用NSRegularExpression来匹配这个单词?我尝试使用确切的单词,但它不起作用.
它甚至没有在像regex101.com这样的网站上工作
这是我的代码(swift版本.但是在swift或obj中的答案很受欢迎).以下代码位于我的playground文件中.我总是变得虚伪,永远不会真实.
let labelString = "???????"
let regex = try NSRegularExpression(pattern: "???????", options: [])
let rangeOfFirstMatch = regex.rangeOfFirstMatchInString(labelString, options:.ReportProgress, range:NSRange(location: 0, length: labelString.characters.count))
if (!NSEqualRanges(rangeOfFirstMatch, NSRange(location: NSNotFound, length: 0))) {
print(true)
} else {
print(false)
}
Run Code Online (Sandbox Code Playgroud)
如果我用"man"这个词替换文本.我总是如此
注意:我已经看过这个问题 - > 如何在Swift 4的可解码协议中使用自定义键?但它没有解释如何编码/解码枚举
这是我想要的结构:
struct MyStruct: Decodable {
let count: PostType
}
enum PostType: Decodable {
case fast(value: Int, value2: Int)
case slow(string: String, string2: String)
}
Run Code Online (Sandbox Code Playgroud)
现在我知道我希望我的结构看起来如何,问题是:
init函数应该在PostType枚举中看起来像什么.我使用下面的代码来帮助我快速构建JSON.
let jsonData = """
{
"count": {
"fast" :
{
"value": 4,
"value2": 5
}
}
}
""".data(using: .utf8)!
// Decoding
do {
let decoder = JSONDecoder()
let response = try decoder.decode(MyStruct.self, from: jsonData)
print(response)
} catch {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?
Edit1 …
我不明白为什么这总是失败。有什么帮助吗?显然,我不明白NSStringFromSelector是如何工作的?这是我的代码如下:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let selector = NSSelectorFromString("test(value:value2:)")
if self.responds(to: selector) {
print("it works")
} else {
print("it failed")
}
}
func test(value: Int, value2: Int) {
}
}
Run Code Online (Sandbox Code Playgroud)