2016-11-16 10 views
-1

NSArray로 튜플을 넣으려면 오류가 있습니다.타입의 값을 타입으로 변환 할 수 없습니다.

내 코드는 다음과 같습니다.

var Name: [String] = [] 
var Requested: [String] = [] 
var Time: [String] = [] 
var Status: [String] = [] 

var filtered: [(process:String, requestor:String, creation:String, status:String)] = [] 
var allItems: [(process:String, requestor:String, creation:String, status:String)] = [] 

for i in 0...Name.count{ 
     if(Name[safe: i] != nil && Requested[safe: i] != nil && Time[safe: i] != nil && Status[safe: i] != nil) 
     { 
     allItems += [(process:Name[i], requestor:Requested[i], creation:Time[i], status:Status[i])] 
     } 
    } 
    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!) 
    let array = (allItems as NSArray).filteredArrayUsingPredicate(searchPredicate) 

이 경우에는 filteredArrayUsingPredicate를 사용하고 싶습니다. 강제로 '있는 NSArray'을 입력 할 수

수 그러나 나는 형의 값을 변환 할 수 없습니다

'[이 (: 문자열, 요청자 : 문자열, 제작 : 문자열, 상태 문자열 처리)]'에 직면하고있다 아무도 왜 내가이 오류에 직면 해 있다고 말합니까?

답변

1

아무도 왜이 오류에 직면 할 수 있습니까?

확실히. NSArray는 Objective-C 클래스입니다. NSArray의 요소가 될 수있는 유일한 객체는 Objective-C 객체입니다. Objective-C에는 튜플과 같은 것이 없습니다. 튜플은 스위프트 개체입니다. Swift 객체의 배열을 NSArray로 변환 할 수 없습니다.

+0

답변 해 주셔서 감사합니다. NSArray 대신 사용할 수있는 것이 있습니까? –

+0

'filteredArrayUsingPredicate'를 호출하려고하지 않을 경우. NSArray 메서드입니다. – matt

+0

그러나 당신은 당신이하고자하는 일을 할 대안이나 다른 방법을 요구하지 않았습니다. 당신은 당신이하려는 것을 설명하지 않았습니다. 귀하의 질문은이 컴파일러 오류가 발생하는 이유였습니다. – matt