相关疑难解决方法(0)

在swift中`if var`和`if let`之间有什么不同?

考虑这两个代码:

if let myValue = myObject.value as NSString?{
 //logic here
}
Run Code Online (Sandbox Code Playgroud)

VS

if var myValue = myObject.value as NSString?{
 //logic here
}
Run Code Online (Sandbox Code Playgroud)

我知道let关键字是定义一个常量,这是否意味着第一行代码,如果myObject.value是NSString,myValue则会产生常量?这看起来令人困惑.

swift

9
推荐指数
2
解决办法
9970
查看次数

在iOS中线程安全是什么意思?

我经常碰到“线程安全”这两个关键术语,想知道这意味着什么。例如,在Firebase或Realm中,某些对象被视为“线程安全”。线程安全的东西到底意味着什么?

thread-safety ios swift

7
推荐指数
3
解决办法
1766
查看次数

Swift可选的初始化

这是我的理解

var perhapsInt : Int?
Run Code Online (Sandbox Code Playgroud)

这会自动设置为一个.None值.以下代码片段确认(没有编译器错误)

class MyClass {
    var num1: Int = 0
    var num2: Int?

    init(num1: Int) {
        self.num1 = num1
    }
}

var newClass = MyClass(num1: 5)
newClass.num1 // prints '5'
newClass.num2 // prints 'nil'
Run Code Online (Sandbox Code Playgroud)

我对可选的初始化过程的理解是否正确?如果是这样,为什么当我换num2到时这不起作用let.

我期待nil使用时可选项默认的相同行为let.我在这里错过了什么吗?

class MyClass {
    var num1: Int = 0
    let num2: Int?

    init(num1: Int) {
        self.num1 = num1
        // compiler error : return from initialiser without initialising all stored properties 
    } …
Run Code Online (Sandbox Code Playgroud)

initialization init optional optional-variables swift

5
推荐指数
1
解决办法
2551
查看次数

var vs let in Swift

我是新来的斯威夫特编程,和我见过的var和let类型.我知道这let是一个常数,我知道这意味着什么,但我从来没有使用常数,主要是因为我不需要.那么为什么我应该使用var而不是let,在什么情况下我应该使用它?

swift

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

更改枚举 Swift 的关联值

如何更改枚举的特定关联值

enum Origin {
    case search(searchTerm: String, filtered: Bool)
    case category(categoryName:String, subcategoryName:String)

}

@objc class GameSession: NSObject
{
    var gameOrigin: Origin?

    ...

    @objc func setIsSearchFiltered(filtered:Bool)
    {
        if (<gameOrigin is of type .search?>)
        {
            self.gameOrigin = <change "filtered" associated value to new value>
        }
    }

    ....
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个问题的答案最近对我没有帮助。

enums swift

3
推荐指数
1
解决办法
2775
查看次数

如何在Swift中更改结构中的变量存储属性?

在苹果网站上,https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html 它声明我们可以更改结构中的变量属性.我想改变这个人的姓氏.但是我在那行代码中收到错误.感谢你们对我的帮助.

import UIKit


struct people {
    let firstName : String
    var lastName : String
}

let person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //<-- error

println(person.firstName)
println(person.lastName)
Run Code Online (Sandbox Code Playgroud)

错误:

游乐场执行失败:TestPlayground2.playground:12:17:错误:无法分配给'人'中的'lastName'person.lastName ="ChangedLastName"~~~~~~~~~~~~~~~~ ^

ios swift xcode6 ios8

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

Swift中的属性和变量有什​​么区别?

从几个初始教程中,我看到属性属于一个类,并且基本上是C++世界中使用的"全局变量"(在此前编码).我还将变量看作更多只在方法中使用/存储信息的"本地"实体.

然后我遇到了这个Quora线程:https://www.quora.com/Apple-Swift-programming-language/What-is-the-difference-between-a-property-and-a-variable 现在我看到属性正在能够执行与其调用相关的代码.这很酷,但也为我打开了一大堆其他问题.

还有其他简单明了的方法来记住属性和变量之间的区别吗?

ios swift

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

Swift 类中的可选 let 和可选 var

我是 Swift 的新手并且遇到了问题。

当我optional let在课堂内使用时,它给出了错误“Class className has no initializers ”。

但是当我使用编写相同的代码时 optional var,它没有显示任何错误。

例如:

以下代码给了我错误:Class className has no initializers

class className: UIViewController
{
    let nearbyPlaceRadius : Int?    

    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
    }
}
Run Code Online (Sandbox Code Playgroud)

以下代码没有给我任何错误。

class className: UIViewController
{
    var nearbyPlaceRadius : Int?    

    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
    }
}
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller ios swift

2
推荐指数
1
解决办法
822
查看次数

当你有LET时,READ-only变量有什么意义?

例如:

var dogName : String {
 return "Buster"
}
Run Code Online (Sandbox Code Playgroud)

VS ..

let dogName = "Buster"
Run Code Online (Sandbox Code Playgroud)

假设我们在类的顶层将这些中的每一个声明为实例属性.这些只是做同样事情的两种方式吗?如果没有,那么拥有只读变量有什么意义呢?

谢谢

swift

2
推荐指数
1
解决办法
682
查看次数

斯威夫特:什么时候应该使用"var"而不是"let"?

正如Apple文档所说:

使用let做一个常数,var使一个变量.在编译时不需要知道常量的值,但是必须为其分配一次值.这意味着您可以使用常量来命名您确定一次但在许多地方使用的值.

让我们考虑一下课程:

class A {
    var a = [String]()
}
Run Code Online (Sandbox Code Playgroud)

由于数组a是可变的,因此它是通过定义的var.但是如果我们考虑B类,A的实例是属性呢?

class B {
    let b = A()
}
Run Code Online (Sandbox Code Playgroud)

即使b是可变的,let关键字也可以,因为引用不会被更改.另一方面,var也可以,因为内容b可以改变.我应该在这个例子中选择什么 - let或者var?

swift

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

迅速吊装?

众所周知,JavaScript"将"变量"提升"到文件或范围的顶部.但根据我的理解,使用let是相同的,var只是let局限于它所定义的范围.

作为一种编译语言而不是解释,我们可以假设Swift不这样做吗?

例如:

x = 10

var y = x + 10

var x
Run Code Online (Sandbox Code Playgroud)

hoisting swift

-2
推荐指数
1
解决办法
407
查看次数

var 数组和 let 数组的区别?

我正在 Swift 中学习数组,在我的书中他们首先写道:

let numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

但是然后写:

var numbers = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我知道这let表示常量并var指代变量,但实际上声明为常量的数组和声明为变量的数组有何不同?

arrays xcode var let swift

-2
推荐指数
1
解决办法
1192
查看次数

区分Swift编程语言中的let和var

我刚开始学习新的Swift语言,我们如何区分,比如何时使用"Let"和"Var".正如我对Java脚本的理解,我知道你想要定义"Var".如何"让"是不同于"无功".

任何帮助,将不胜感激.

swift

-9
推荐指数
1
解决办法
2503
查看次数