2014-12-11 2 views
-1

NSArray에서 모든 값을 가져 오려고합니다. 내 NSArray이 (Obj C 코드)처럼 보입니다. 스위프트 : NSArray에서 원하는 모든 값을 가져 오는 중 오류가 발생했습니다.

NSArray *array = @[ @{@"title" : @"title 1", @"description" : @"description 1"}, 
@{@"title" : @"title 2", @"description" : @"description 2"}, 
@{@"title" : @"title 3", @"description" : @"description 3"} ]; 

나는이 때문에 이상한 오류로 작동하지 않는, 그러나 다음

for dic : NSDictionary in array { 

} 

으로 신속 이것을 수행하기 위해 노력하고 있습니다.

Type 'NSArray' cannot be implicitly downcast to 'NSDictionary'; did you mean to use 'as' to force downcast? 

답변

0

다음과 같이하십시오 : -

var array = [["title" : "title 1", "description" : "description 1"], 
["title" : "title 2", "description" : "description 2"], 
["title" : "title 3", "description" : "description 3"]] 

for dict in array 
{ 
    for (key, value) in dict { 
    println(key,":",value) 
    } 
} 
+0

배열이 NSArray 인 경우 두 번째'for' 루프에서'dict'을 NSDictionary로 형변환해야합니다. 그렇지 않으면 오류가 발생합니다 : type 'AnyObject'가 'SequenceType'프로토콜을 따르지 않습니다. – vacawama

+0

그러나 NSArray를 신속하게 코드에 포함 시키면 오류가 발생합니다. 그래서 구현 된 그 –

+0

'var 배열로 선언 : NSArray = [[ "제목"...'그리고 내 요점을 볼 수 있습니다. – vacawama

0

그냥 [NSDictionary]NSArray를 캐스팅. 효과가있을 것입니다.

for dict in (array as [NSDictionary]) { 

} 

나는 for-in 구문은 Generator들과 함께 작동하기 때문에 캐스팅에 대한 이유는 믿습니다. NSArray이 없으므로 신속한 배열로 전송해야합니다.

+1

을'NSArray''와 함께 작동 in'를 들어-. 이 캐스팅은'dict'가'NSDictionary' 타입을 갖도록합니다. OP가 그랬던 것처럼, 그는'NSArray'의'AnyObject'를'NSDictionary' 타입의 변수에 할당하려했습니다. 작동하지 않습니다. – vacawama

관련 문제