Swift 딕셔너리에 키가 포함되어 있는지 확인하고 해당 값 중 하나를 가져옵니다.
저는 현재 (빈) Swift 사전이 특정 키를 포함하고 있는지 여부를 판단하고 동일한 사전에서 하나의 값을 얻기 위해 다음과 같은 코드 조각을 사용하고 있습니다.
어떻게 Swift에서 이것을 더 우아하게 표현할 수 있을까?
// excerpt from method that determines if dict contains key
if let _ = dict[key] {
return true
}
else {
return false
}
// excerpt from method that obtains first value from dict
for (_, value) in dict {
return value
}
사전에서 이미 수행 중인 작업이기 때문에 이 작업을 수행하는 데 특별한 코드가 필요하지 않습니다.가져올 때dict[key]
사전이 키를 포함하는지 여부를 알 수 있습니다. 왜냐하면 반환되는 선택사항은nil
(값도 포함되어 있습니다).
따라서 사전에 키가 포함되어 있는지 여부를 묻는 질문에만 답하려면 다음과 같이 질문합니다.
let keyExists = dict[key] != nil
값을 원하는 경우 사전에 키가 포함되어 있는 경우 다음과 같이 입력합니다.
let val = dict[key]!
그러나 일반적으로 키가 포함되어 있지 않은 경우에는 키를 가져와 사용하고 싶은 경우에만 다음과 같은 것을 사용합니다.if let
:
if let val = dict[key] {
// now val is not nil and the Optional has been unwrapped, so use it
}
간단히 확인하면 어떨까요?dict.keys.contains(key)
? 확인 중dict[key] != nil
값이 0인 경우에는 작동하지 않습니다.사전과 마찬가지로[String: String?]
예를들면.
인정된 답변let keyExists = dict[key] != nil
사전이 키를 포함하지만 값이 0인 경우 작동하지 않습니다.
사전에 키가 전혀 포함되어 있지 않은지 확인하려면 이 키를 사용하십시오(Swift 4에서 테스트됨).
if dict.keys.contains(key) {
// contains key
} else {
// does not contain key
}
@matt에서 필요한 정보를 얻을 수 있을 것 같습니다만, 키의 값을 빠르게 취득할 수 있는 방법을 원하거나, 키가 존재하지 않는 경우는 첫 번째 값만 취득할 수 있습니다.
extension Dictionary {
func keyedOrFirstValue(key: Key) -> Value? {
// if key not found, replace the nil with
// the first element of the values collection
return self[key] ?? first(self.values)
// note, this is still an optional (because the
// dictionary could be empty)
}
}
let d = ["one":"red", "two":"blue"]
d.keyedOrFirstValue("one") // {Some "red"}
d.keyedOrFirstValue("two") // {Some "blue"}
d.keyedOrFirstValue("three") // {Some "red”}
첫 번째 값으로 실제로 얻을 수 있는 값은 보장되지 않습니다. 이 경우 "빨간색"이 반환될 뿐입니다.
옵션의 NSAttribedString을 저장하는 캐시 구현을 위한 솔루션:
public static var attributedMessageTextCache = [String: NSAttributedString?]()
if attributedMessageTextCache.index(forKey: "key") != nil
{
if let attributedMessageText = TextChatCache.attributedMessageTextCache["key"]
{
return attributedMessageText
}
return nil
}
TextChatCache.attributedMessageTextCache["key"] = .some(.none)
return nil
키 값을 반환하려면 이 확장자를 사용할 수 있습니다.
extension Dictionary {
func containsKey(_ key: Key) -> Value? {
if let index = index(forKey: key){
return self.values[index]
}
return nil
}
}
if dictionayTemp["quantity"] != nil
{
//write your code
}
키의 값이 0인 사전을 취급하고 있는 경우는, 다음의 방법으로 키의 존재를 확인할 수 있습니다.
dictionay.index(forKey: item.key) != nil
사전에서 첫 번째 값을 가져오는 경우:
dictionay.first?.value // optional since dictionary might be empty
언급URL : https://stackoverflow.com/questions/28129401/determining-if-swift-dictionary-contains-key-and-obtaining-any-of-its-values
'programing' 카테고리의 다른 글
VBA를 사용하여 현재 연도를 얻는 방법 (0) | 2023.04.15 |
---|---|
Swift @autoclosure 사용방법 (0) | 2023.04.15 |
저장하지 않고 저장 내용 확인 (0) | 2023.04.15 |
SQL Server Management Studio에서 테이블에 인덱스를 추가할 수 없습니다. (0) | 2023.04.15 |
에코 없이 셸 스크립트에서 비밀번호를 얻는 방법 (0) | 2023.04.15 |