2015-04-02 4 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)! 
Смежные вопросы