2015-04-02 33 views
0

我声明一个全局变量_dataArray:致命错误:无法索引空缓冲区

var _dataArray : Array<AnyObject> = Array(); 

,然后定义一个函数:

func fetchCoreData(userName: String){ 
    var context : NSManagedObjectContext = appDel.managedObjectContext! 
    var request = NSFetchRequest(entityName: "GoodModel") 
    request.returnsObjectsAsFaults = false 
    request.predicate = NSPredicate(format: "uid = %@",_userUid) 
    let _dataArray = context.executeFetchRequest(request, error: nil)! 
    if(_dataArray.count == 0){ 
     println("We need to parse JSON") 
     self.parseJSON() 
    }else{ 
     println("Display from CoreData, we do not need to parse JSON!") 
     println("_dataArray.count:%d",_dataArray.count) 
     self.tableView.reloadData() 
    } 
} 

从控制台上,我可以看到,有这20个对象_dataArray。 但是在下面的函数中,_dataArray的计数是0.为什么?????????

@IBAction func endorseButton(sender: AnyObject, forEvent event: UIEvent) { 
    println(_dataArray.count) 
    let touches = event.allTouches() 
    let touch: AnyObject? = touches?.anyObject() 
    let currentTouchPosition = touch?.locationInView(self.tableView) 
    let indexPath = self.tableView.indexPathForRowAtPoint(currentTouchPosition!)? 
    if let ip = indexPath { 
     var data:NSManagedObject = _dataArray[ip.row] as NSManagedObject 
    } 
} 

回答

0

的问题是这一行:

let _dataArray = context.executeFetchRequest(request, error: nil)! 

声明当地_dataArray

你应该只省略let

_dataArray = context.executeFetchRequest(request, error: nil)!