ios - 无法将类型 '__NSDictionaryM' (0x2819d60) 的值转换为 'NSString' (0x2e85588)

标签 ios iphone swift uitableview

我在 swift 中有一个 tableview,一切正常,但是当我尝试在搜索栏中过滤某些内容时,出现此错误:

我在 swift 中有一个 tableview,一切正常,但是当我尝试在搜索栏中过滤某些内容时,出现此错误:

Could not cast value of type '__NSDictionaryM' (0x2819d60) to 'NSString' (0x2e85588). 

这是我的代码

var info = NSDictionary();    
var searchActive : Bool = false
var alertController: BPCompatibleAlertController?
var alert1: UIAlertView = UIAlertView()
var loadingIndicator1: UIActivityIndicatorView = UIActivityIndicatorView()
@IBOutlet weak var searchBar: UISearchBar!

var cuenta:String!
var user:String!
var password:String!
var data = [String]()    

var is_searching:Bool!
var filtered:NSMutableArray = NSMutableArray() 
var posts1:NSMutableArray = NSMutableArray()   
var myData:NSMutableArray = NSMutableArray()

var searchingDataArray:NSMutableArray = NSMutableArray()

override func viewDidLoad()
{
    super.viewDidLoad()

     is_searching = false
    self.beginParsing()
    tableView.delegate = self
    tableView.dataSource = self
    searchBar.delegate = self

}

// this method does all the search trick
func searchBar(searchBar: UISearchBar, textDidChange searchText: String){
    if searchBar.text.isEmpty{
        is_searching = false
        self.tableView.reloadData()
    } else {
        println(" search text %@ ",searchBar.text as NSString)
        is_searching = true
        searchingDataArray.removeAllObjects()
        for var index = 0; index < self.posts1.count; index++
        {
            var currentString = self.posts1.objectAtIndex(index) as! String
            if currentString.lowercaseString.rangeOfString(searchText.lowercaseString)  != nil {
                searchingDataArray.addObject(currentString)

            }
        }
        self.tableView.reloadData()
    }
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if is_searching == true{
        return self.searchingDataArray.count
    }
    else{
        return self.posts1.count  //Currently Giving default Value
    }
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
   let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell;

    if is_searching == true {   

        println("Active")
        cell!.textLabel?.text = searchingDataArray[indexPath.row] as! NSString as String

    }
    else {

        var speedKPH_Default = posts1.objectAtIndex(indexPath.row).valueForKey("speedKPH") as! NSString
        let  speedKPH_NSSTring = NSString(string: speedKPH_Default).intValue
        var Speed_Normal = String(speedKPH_NSSTring)
        var fecha_default = posts1.objectAtIndex(indexPath.row).valueForKey("timestamp") as! NSString
        var now = (NSDate(timeIntervalSince1970:(fecha_default as NSString).doubleValue))
        var fecha_Normal = NSDateFormatter()
        fecha_Normal.dateFormat = "dd-MM-yyyy' 'HH:mm' '"
        fecha_Normal.timeZone = NSTimeZone(forSecondsFromGMT: 0)
        var union = "Veloc. : " + Speed_Normal+" KM/H  /  Ult. Act. : " + fecha_Normal.stringFromDate(now)

        cell!.textLabel?.text = (posts1.objectAtIndex(indexPath.row).valueForKey("des") as! NSString as String) + "\n" + union

        cell!.detailTextLabel?.text = posts1.objectAtIndex(indexPath.row).valueForKey("dev") as! NSString as String
    }
    spinneroff()
    return cell!;

}

这里我放置了调试中的所有信息

searchBar   UISearchBar 0x7873fa00  0x7873fa00
searchText  String  "F" 
_core   _StringCore     
_baseAddress    COpaquePointer  0x0000000000000000  0x0000000000000000
_countAndFlags  UWord   3221225473  3221225473
_owner  AnyObject?  Some    Some
self    AppOctagonoGPS.mtTableTableViewController   0x7a053c00  0x7a053c00
index   Int 0   0
currentString   String  "\b`\xf7\xbf\x89\xfb\f" 
_core   _StringCore     
_baseAddress    COpaquePointer  0x00000000bff75fc8  0x00000000bff75fc8
_countAndFlags  UWord   74571669    74571669
_owner  AnyObject?  Some    Some
instance_type   Builtin.RawPointer  0x78677910  0x78677910 -> 0x0284f7ac (void *)0x0284f784: __NSCFString

最佳答案

您说错误发生在以下行:

    var currentString = self.posts1.objectAtIndex(index) as! String

但是,您还有另一行显示 posts1 不包含字符串:

    var speedKPH_Default = posts1.objectAtIndex(indexPath.row).valueForKey("speedKPH") as! NSString

这里您正在对 posts1 的数组元素调用“valueForKey”方法,因此它显然不是一个字符串数组。

关于ios - 无法将类型 '__NSDictionaryM' (0x2819d60) 的值转换为 'NSString' (0x2e85588),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31221163/

相关文章:

ios - XCode iOS 分发证书自动被撤销

ios - 未声明的标识符 'FBAppCall' 'FBDialogs'

ios - 在 Swift 中为 mapView 上的每个注释显示不同的图像

iphone - IOS:使用 UISearchbar 自动完成搜索

ios - 带地理围栏的存折

ios - UIWebview 缩放 PDF 和大 .图像缩放 默认情况下 IOS

ios - IPA 文件困惑。如何确定我的 .ipa 文件是否可以在另一台 iPhone 上运行?

iphone - objective-c - tableview 内的按钮防止表格滚动

ios - 根据 View 更改自定义 UITableViewCell 高度

iphone - 如何在 iOS 中将 Float64 转换为 NSString