2017-01-08 1 views
-1

누구든지 구문에 문제가있는 경우 도와 드릴 수 있습니다.중첩 배열에서 값을 읽는 올바른 구문은 무엇입니까?

배열의 int를 읽을 수있는 올바른 방법은 무엇입니까 -> DICT -> 배열 -> DICT -> 배열 -> [0]

나는 새로운 해요 스위프트 3 및 문제 추출하는 데 오전 변하기 쉬운. 어떤 도움이 절실히 받아 들여질 것입니다. 내가의 라인을 따라 뭔가 시도했다 : 더 명확하게하기 위해

let sen = dict["senzu"] as? [[String:Any]] 
    let sen1 = dfa?[0][0]["green"] as? Any 

답변

0

을, 나는 구분 :

배열 -> DICT -> 배열 -> DICT -> 배열 -> [0]

// Array of Ints 
var arrayLevel_05 = [1, 2, 3, 4] 

// Dict of arrays of ints 
var dictLevel_04: [String: [Int]] = ["myArray01": arrayLevel_05] 

// Array of dicts of arrays of ints 
var arrayLevel_03:[[String: [Int]]] = [dictLevel_04] 

// Dict of arrays of dicts of arrays of ints 
var dictLevel_02: [String: [[String: [Int]]]] = ["myArray02": arrayLevel_03] 

// Array of dict of arrays of dicts of arrays of ints 
var arrayLevel_01:[[String : [[String : [Int]]]]] = [dictLevel_02] 

을 따라서 01 int 치의 값을 얻기 위해 : 마지막 배열 레벨 05이고, 다음과 같이 제 배열은, 레벨 01이라고 가정 분리 레벨

, 2,328,652,:

선택적 항목 당신이 항상 값을 얻을 것이다 확신하는 경우는, 사전에서 값을 읽기 때문이라는 것을
let one = arrayLevel_01[0]["myArray02"]?[0]["myArray01"]?[0] 
let tow = arrayLevel_01[0]["myArray02"]?[0]["myArray01"]?[1] 
let three = arrayLevel_01[0]["myArray02"]?[0]["myArray01"]?[2] 

주, 당신은 대체 할 수 ?!와 (힘 풀기) 다음과 같이

let one = arrayLevel_01[0]["myArray02"]![0]["myArray01"]![0] 
let tow = arrayLevel_01[0]["myArray02"]![0]["myArray01"]![1] 
let three = arrayLevel_01[0]["myArray02"]![0]["myArray01"]![2] 

또는 옵션 바인딩 접근 방식에 따라 :

if let arrayLevel03 = arrayLevel_01[0]["myArray02"], let arrayLevel05 = arrayLevel03[0]["myArray01"] { 
    let one = arrayLevel05[0] // 1 
    let tow = arrayLevel05[1] // 2 
    let three = arrayLevel05[2] // 3 
} 

선택 사항에 대한 자세한 내용은 Apple Documentation (선택 사항)을 확인하십시오.

희망이 도움이되었습니다.

관련 문제