중첩 for 루프를 사용하지 않고 아래 AllData에서 "names"문자열을 포함하는 Array를 가져 오는 효율적인 방법이 있습니까? "앨리스", "브래드 스미스 MD", "닥터 캄", "제니퍼 존슨", "존 뱅크스 MD"가 출력으로 작동하지만 코드가 효과적이지 않기 때문에 중첩 된 루프없이이를 수행하려고합니다. O n^2이고 읽기가 어렵습니까? 나는 특정 일치하는 항목이 발견 될 때까지 만 값을 사용하려면 키를 비교하기 위해, 사전에 (key, value)
쌍 집합을 반복 할 이유가 전혀 없다 엑스 코드 8.2배열에서 문자열 배열을 효율적으로 추출하는 방법 <Dictionary <String, String >>
var AllData:Array<Dictionary<String,String>> = []
override func viewDidLoad() {
super.viewDidLoad()
AllData = [["pic":"Alice.png","name":"Alice Smith","position":"Nurse"],
["pic":"brad.png","name":"Brad Smith MD","position":"Primary Doctor"],
["pic":"user.png","name":"Dr. Quam","position":"Immunologist"],
["pic":"jennifer.jpg","name":"Jennifer Johnson","position":"Case Manager"],
["pic":"user.png","name":"John Banks MD","position":"Cardiologist"]
]
let names = ""
for thing in AllData { //thing is pic, name, position
for (key, value) in thing {
if(key == "name"){
names.append(value)
//print(value)
}
}
}
print(names)
}
정적 얼티 마이저에서'AllData'를 새로운 빈 배열로 설정하는 이유는'viewDidLoad'에서 새로운 정적 데이터로 즉시 바꾸기 만하는 이유는 무엇입니까? 그냥'AllData'를 정적 데이터와 똑같이 설정하십시오. – Alexander
또한 신속한 규칙은 UpperCamelCase를 사용하여 이름을 지정하는 유형에만 적용됩니다. 다른 모든 인스턴스 및 정적 변수는 lowerCamelCase 여야합니다. – Alexander
"* 배열 [...]을 출력으로 얻습니다."- 당신은'name'을'String'으로 만들었으므로, 출력 할 때'String'을 얻지 못합니다. 'let names = [String]()'을 의미 했습니까? – Hamish