我正在研究苹果应用程序开发指南,这是我现在正在使用的代码......
struct CategoryInfo: Codable {
var category: String
var description: String
var logo: String
var mobileCategoryName: String
enum Keys: String, CodingKey {
case category
case description = "descr"
case logo
case mobileCategoryName = "mobileCatName"
}
init(from decoder: Decoder) throws {
let valueContainer = try decoder.container(keyedBy: Keys.self)
self.category = try valueContainer.decode(String.self, forKey: Keys.category)
self.description = try valueContainer.decode(String.self, forKey: Keys.description)
self.logo = try valueContainer.decode(String.self, forKey: Keys.logo)
self.mobileCategoryName = try valueContainer.decode(String.self, forKey: Keys.mobileCategoryName)
}
}
override func viewDidLoad() {
super.viewDidLoad()
let categories = …Run Code Online (Sandbox Code Playgroud) 我注意到在IOS X-Code中使用(Swift 4.0),我至少可以通过以下两种方式询问视图的高度V:
V.bounds.size.height
Run Code Online (Sandbox Code Playgroud)
和...
V.bounds.height
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么实际差异吗?
我做了选项单击的东西(它给出了不同的定义,但没有解释任何实际差异或原因而不是另一个)...和stackoverflow ...但是在stackoverflow上,所有的结果都讨论了它们之间的区别边界和框架 ......这不是我要问的.
我想在 watchOS6 中创建 SwiftUI 视图时注入 EnvironmentObject。
但是由于 WKHostingController 需要一个具体类型,我无法执行以下操作 ContentView().environmentObject(UserData())
class HostingController: WKHostingController<ContentView> {
override var body: ContentView {
return ContentView().environmentObject(UserData())
}
}
Run Code Online (Sandbox Code Playgroud)
此代码失败并出现以下错误:
无法将“some View”类型的返回表达式转换为“ContentView”类型
我见过这样的解决方法: 在 watchOS 中使用 environmentObject这似乎是一个黑客而不是一个正确的解决方案。
我问关于同在Twitter上watchOS工程师,他的回答是地方.environmentObject(UserData())的主体内ContentView()。我尝试这样做,但 Xcode 报告错误。
那么有没有人找到一种方法来做同样的事情?
我想将 int 数字转换为这个数字的字母。我有一个文本字段。在这个文本字段中,用户可以写数字,然后我想将此数字转换为字母。例如,我想将 11 转换为 11。我怎样才能在 swift 中完成这项工作。
我有一个由 3 个 StackView 组成的自定义单元格。每一个都有一个标题、一个描述和一个水平图像。我必须用数组填充这个单元格,它最多可以由 3 个元素组成,但也可以有 2 或 1 个。所以在我的 viewModel 中,我像这样处理这个数组......
let firstItem = myArray[0]
let secondItem = myArray[1]
let thirdItem = myArray[2]
Run Code Online (Sandbox Code Playgroud)
我用...填充字段firstItem.name firstItem.description......对于其中每一个(我猜这不是最好的方法)然后我做了一些检查索引是否存在,如果不存在我删除StackView,我手动设置一些约束并且我适合单元格到内容(如果我有 2 个元素,则单元格较短,如果我有 3 个元素,则单元格较大)。
这是我检查索引 3 不存在后的一段代码:
self.stackView.removeFromSuperview()
self.ownConstraints.constant = value (20 for example)
Run Code Online (Sandbox Code Playgroud)
我的问题是,实现这一目标的最佳方法是什么?对于单元格,我通常会通过 for 循环逐一附加项目,但我不熟悉单元格内 StackView 上的这种方法。
这就是我对单元格(一系列具有 1 个名称和 1 个描述的单元格)所做的操作:
for (element) in myArray {
self.cellArray.append( elementName , elementDescription )
}
Run Code Online (Sandbox Code Playgroud) 当协议将属性声明为optional并且具体类型将其声明为non-optional 时,如何使具体类型符合协议?
这是问题所在:
protocol Track {
var trackNumber: Int? { get } // not all tracks have a track number
}
struct SpotifyTrack {
let trackNumber: Int // all SpotifyTrack are guaranteed to have a track number
}
extension SpotifyTrack: Track {
var trackNumber: Int? {
return self.trackNumber // WARNING: All paths through this function will call itself
}
}
Run Code Online (Sandbox Code Playgroud)
我不想将其设为trackNumber可选项,SpotifyTrack因为我知道 SpotifyTracks 的价值将始终存在。有没有比重命名属性更优雅的解决方案?
在互联网上搜索我发现在小部件的旧版本中存在以下内存限制:
对用户交互做出适当的响应。表现良好(尤其是 iOS 小部件必须明智地使用内存,否则系统可能会终止它们)。” 小部件的内存限制为 16 MB,因此请保持简单并确保测试您的小部件是否存在内存泄漏
我想了解新版本iOS 14可能使用的内存是否相同或已更改。
我在文档中找不到任何内容。
我想在 中编写一个小部件Swift ui,但首先我想了解是否有任何限制。
谁能给我一些澄清?
我正在关注 Scrumdinger 应用程序的 ios 应用程序开发教程,并且我一直在遵循该教程,并且它一直有效,直到我完成“使用绑定传递数据”部分。我在第 58 行“DetailEditView(data: $data)”上不断出现错误。这正是教程所说的,所以我不知道为什么会出现错误。
这是我的详细视图文件的完整代码:“
//
// DetailView.swift
// Scrumdinger
//
// Created by ZOE HEIM on 4/25/22.
//
import Foundation
import SwiftUI
struct DetailView: View {
@Binding var scrum: DailyScrum
@State private var data = DailyScrum.Data()
@State private var isPresentingEditView = false
var body: some View {
List {
Section(header: Text("Meeting Info")) {
NavigationLink(destination: MeetingView()) {
Label("Start Meeting", systemImage: "timer")
.font(.headline)
.foregroundColor(.accentColor)
}
HStack {
Label("Length", systemImage: "clock")
Spacer()
Text("\(scrum.lengthInMinutes) minutes")
}
.accessibilityElement(children: .combine)
HStack …Run Code Online (Sandbox Code Playgroud)