2016-09-02 2 views
0

Xcode가이 코드를 실행하는 것을 허용하지 않기 때문에 코드에 문제가 있는지 파악하려고합니다. 어떤 생각이 잘못된 것입니까?스위프트 이슈 - 배열의 2 차원 배열이있는 사전

var dictionary = [String: [[String]]]() 
var array = [[AnyObject]]() 

dictionary["1"] = [["A", "A"], ["A1", "A2"]] 
dictionary["2"] = [["B", "B"], ["B1", "B2"]] 
dictionary["3"] = [["C", "C"], ["C1", "C2"]] 

for i in 1...3 { 
    array.appendContentsOf([dictionary["\(i)"]!]) 
} 

print(array) 

이 내가이 출력처럼 가질 계획입니다 무엇 :

[[["A", "A"], ["A1", "A2"]], [["B", "B"], ["B1", "B2"]], [["C", "C"], ["C1", "C2"]]] 

내가 엑스 코드에서 오류가 무엇을 가지고이 :

내부 오류가 발생했습니다. 소스 편집기 기능은 제한되어 있습니다.

참고 : array.appendContentsOf ([! 사전 [ "(I)"]])하고 오류가없는하지만 난이 줄을 추가 한 경우 :이 라인을 제거한 경우 이에 대한 가장 기괴한 부분 Xcode에서 오류가 발생했습니다.

+0

오류 무엇을 (그리고 그것은 어디에서 무슨 일이 일어나고)? – Carter

+0

@Carter 이것은 Xcode에서 얻은 메시지입니다. "내부 오류가 발생했습니다. 소스 편집기 기능이 제한되어 있습니다." – prosarah

+0

@EricAya 예, 알고 있습니다. array.appendContentsOf ([dictionary [ "\ (i)"]!]) 그리고이 줄을 추가하면 오류가 발생하지 않지만 Xcode에서 오류가 발생했습니다. . – prosarah

답변

0

매우 가까이에 있습니다! 몇 변경 :

  1. array[[[String]]]() 대신 [[AnyObject]]()으로 정의 할 필요가 있었다. AnyObjectString은 추가 할 수 없습니다. 또한, []의 또 다른 계층은 목표 배열을했다으로 추가 3이 스위프트의 모든 버전에서 호환되며 미개봉 인에서 추가 인수를 유지으로 깊은하지 2.
  2. array += [dictionary["\(i)"]!]array.appendContentsOf([dictionary["\(i)"]!]) 변경되었습니다. 한

이 (스위프트 놀이터에서 테스트) 정답을 제공합니다

var dictionary = [String: [[String]]]() 
var array = [[[String]]]() 

dictionary["1"] = [["A", "A"], ["A1", "A2"]] 
dictionary["2"] = [["B", "B"], ["B1", "B2"]] 
dictionary["3"] = [["C", "C"], ["C1", "C2"]] 

for i in 1...3 { 
    array += [dictionary["\(i)"]!] 
} 

// console: 
// [[["A", "A"], ["A1", "A2"]], [["B", "B"], ["B1", "B2"]], [["C", "C"], ["C1", "C2"]]] 
print(array) 
+0

와우, 잘 작동하고있어. 나는 아직도 appendContentsOf에 문제가있는 이유를 모른다. 네가 제공 한이 두 번째 옵션에 대해서 생각조차하지 않았다. 정말 고맙습니다! – prosarah