我正在开发一个本机iOS应用程序,它从我们也可以控制的Web服务接收JSON格式的数据.计划是在18个月内改变后端数据库,转而采用不同的平台.
考虑到这一点,我们希望确保iOS应用程序相对容易适应新的数据源,特别是因为我们可能会更改通过JSON从服务器接收的关联数组中使用的键.
有两个目标:
为每个PHP请求创建一个位置,如果需要,可以修改密钥.这样可以避免通过代码挖掘来找到类似的东西job["jobNumber"].
清理我们现有的代码,以消除像job["jobNumber"].
我们都是Swift的新手,没有Objective-C经验,但我认为Struct或Class适合创建像job.jobNumber.
字典应该转换成类还是结构?表示采用Dictionary<String, String>如下所示的可重用方法并将其转换为推荐类型的示例代码将非常有用.
示例词典:
job = {
"jobNumber" : "1234",
"jobName" : "Awards Ceremony",
"client" : "ACME Productions"
}
Run Code Online (Sandbox Code Playgroud)
期望的结果:
println("job name is \(job.name)")
// prints: job name is Awards Ceremony
Run Code Online (Sandbox Code Playgroud) 我想在我的Swift项目中创建一个Constants文件 - 填充静态let字符串.
我应该创建一个结构还是一个类?为什么?
我正在阅读Apple的文档.我以为我知道何时选择值类型以及何时选择引用类型,但我回到Swif101.文件说:
- 值类型:数据将用于跨多个线程的代码中.
- 引用类型:您希望创建共享的可变状态
多个线程之间是否也共享引用类型?这两条线有什么区别?
我正在开发一个使用Swift的游戏,我有一个静态的位置数据数组,我用它来在游戏循环中进行处理.我最初使用一个Structs数组来保存这些数据,但我决定切换到类,所以我可以使用引用.但是在进行更改和分析之后,我注意到CPU在处理此数据的方法上花费的时间比在使用Structs时花费的时间多得多.
所以我决定创建一个简单的测试来看看发生了什么.
final class SomeClass {}
struct SomeStruct {}
let classes = [
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
SomeClass(),
]
let structs = [
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
SomeStruct(),
]
Run Code Online (Sandbox Code Playgroud)
func test1() {
for i in 0...10000000 {
for s in classes {}
}
}
func test2() {
for i in …Run Code Online (Sandbox Code Playgroud) 我已经用谷歌搜索了这个问题,以清除一些基本概念,但是没有找到合适的答案。
Swift编译器和Apple LLVM(Objective-C)的Xcode构建设置中有多少优化级别可用于代码生成?
在 Swift 应用程序中,我尝试嵌套结构以提高清晰度。这是代码:
struct ColorStruct {
var colorname: String = ""
struct RGB {
var red: Int = 0
var green: Int = 0
var blue: Int = 0
}
}
Run Code Online (Sandbox Code Playgroud)
我可以访问一个ColorStruct元素(例如:“colorname”),只要它不是嵌套的。
问:关于如何正确访问“红色”变量,我不明白什么?
var newColor = ColorStruct()
newColor.colorname = "Red"
newColor.RGB.red = 255 // Results in error:
// Static member 'RGB' cannot be used on instance of type `ColorStruct`
Run Code Online (Sandbox Code Playgroud) 我目前正在熟悉 SwiftUI 和 Combine 框架。而且我并没有真正了解这两种方法之间的区别。当我们必须跟踪一些数据(比如任务列表)时,我们可以声明一个@State 变量,它的变化会自动发送通知并更新当前视图。但是,看起来也可以这样做:
class TaskList: ObservableObject{
//a list that's going to be modified and updated on different occasions
@Published var list: [String]
}
class TodoListView {
@ObservedObject var todoList = TaskList()
}
Run Code Online (Sandbox Code Playgroud)
所以,我错过了一点 - @State 和 @ObservedObject 方法有何不同,在哪种情况下更可取?
谢谢!
struct ContentView: View {
var body: some View {
Text("Hello World")
}
}
struct contentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
为了以Struct为起点,我们将在视图上设计的所有UI都将在Struct内部,并且我们知道Struct是值类型,并且它将在堆栈中分配内存。
就内存而言,它将如何影响?
swift ×8
struct ×4
class ×2
ios ×2
optimization ×2
swiftui ×2
xcode ×2
arrays ×1
combine ×1
dictionary ×1
nested ×1
objective-c ×1
performance ×1