无法将类型的值...转换为

时间:2016-11-16 02:28:32

标签: swift nsarray

我将我的元组作为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。但我正面临

  

无法将类型'[(process:String,requestor:String,creation:String,status:String)]'的值转换为强制类型'NSArray'

有谁能告诉我为什么我会遇到这个错误?

1 个答案:

答案 0 :(得分:1)

  

有谁能告诉我为什么我会遇到这个错误?

当然可以。 NSArray是一个Objective-C类。唯一可以作为NSArray元素的对象是Objective-C对象。 Objective-C中没有元组这样的东西;元组是 Swift 对象。无法将Swift对象数组转换为NSArray。