[ios] 스위프트 : 빈 사전 선언

Apple에서 제공 swift하는 iBook- The Swift Programming Languageon Swift 를 따라 배우기 시작했습니다 . 이 책은 다음 [:]과 같이 배열을 선언하는 동안 빈 사전을 만들어야한다고 말합니다 [].

다음과 같이 빈 배열을 선언했습니다.

let emptyArr = [] // or String[]()

그러나 빈 사전을 선언하면 구문 오류가 발생합니다.

let emptyDict = [:]

빈 사전을 어떻게 선언합니까?



답변

var emptyDictionary = [String: String]()

­

var populatedDictionary = ["key1": "value1", "key2": "value2"]

참고 : 시간이 지남에 따라 사전의 내용을 변경하려는 경우 var(변수) 로 선언하십시오 . 빈 사전을 (일정한) 것으로 선언 할 수 let 있지만 시간이 지남에 따라 내용을 변경하려는 의도가있는 경우 의미가 없습니다. 초기화 후에 상수를 변경할 수 없기 때문입니다.


이전 답변 :

빈 유형의 사전을 작성하면 <String, String>다음과 같습니다.

var emptyDictionary = Dictionary<String, String>()


답변

[:]타입 정보가 없으면 사용할 수 없습니다 .

이 경우 명시 적으로 제공해야합니다.

var dict = Dictionary<String, String>()

var변경할 수 있음을 의미하므로 항목을 추가 할 수 있습니다. 반대로, 당신이 그것을 만들면 let더 이상 수정할 수 없습니다 ( let상당한 의미).

[:]예를 들어 유형 정보를 유추 할 수있는 경우 속기 표기법을 사용할 수 있습니다.

var dict = ["key": "value"]

// stuff

dict = [:] // ok, I'm done with it

마지막 예에서 사전은 Dictionary<String, String>첫 번째 행 의 유형을 갖는 것으로 알려져 있습니다 . 명시 적으로 지정할 필요는 없지만 추론되었습니다.


답변

스위프트 문서는 빈 사전을 초기화하기 위해 다음과 같은 방법을 권장합니다 :

var emptyDict = [String: String]()

다른 답변이 빈 사전을 초기화하는 다른 방법을 보여주기 때문에이 질문에 처음 왔을 때 약간 혼란 스러웠습니다. 실제로 Swift의 유형을 유추하는 능력이 약간 중복되거나 지나치게 장황하지만 실제로는 할 수있는 방법이 많이 있습니다.

var emptyDict = [String: String]()
var emptyDict = Dictionary<String, String>()
var emptyDict: [String: String] = [:]
var emptyDict: [String: String] = [String: String]()
var emptyDict: [String: String] = Dictionary<String, String>()
var emptyDict: Dictionary = [String: String]()
var emptyDict: Dictionary = Dictionary<String, String>()
var emptyDict: Dictionary<String, String> = [:]
var emptyDict: Dictionary<String, String> = [String: String]()
var emptyDict: Dictionary<String, String> = Dictionary<String, String>()

빈 사전이 있으면 다음과 같이 키-값 쌍을 추가 할 수 있습니다.

emptyDict["some key"] = "some value"

사전을 다시 비우려면 다음을 수행하십시오.

emptyDict = [:]

형식이 <String, String>초기화 된 방식이기 때문에 여전히 유형 입니다.


답변

이것을 사용하십시오.

var emptyDict = [String: String]()


답변

다음과 같이 간단히 선언 할 수 있습니다.

var emptyDict:NSMutableDictionary = [:]


답변

사전에 유형을 제공해야합니다

// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()

컴파일러가 형식을 유추 할 수있는 경우 더 짧은 구문을 사용할 수 있습니다

namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type Int, String


답변

빠른:

var myDictionary = Dictionary<String, AnyObject>()