2016-11-16 136 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對象。 Swift對象的數組不能轉換爲NSArray。

+0

感謝您的回答。有什麼我可以使用,而不是NSArray? –

+0

如果您堅持要求'filteredArrayUsingPredicate',則不是。這是一個NSArray方法。 – matt

+0

但是,您並沒有要求其他方法或其他方法來做您正在嘗試做的事情。你甚至沒有解釋你想做什麼。你的問題是爲什麼你會得到這個編譯器錯誤,並且我正確地告訴過你,爲什麼會這樣。 – matt

相關問題