【问题标题】:Display values for PickerView from Core Database显示核心数据库中 PickerView 的值
【发布时间】:2016-10-31 16:04:59
【问题描述】:

我是一名新的 IOS 开发人员。我正在使用 Xcode 8 和 swift 3。 我想从保存在 Core 数据库中的数据中将值显示到 pickerView 中。我的代码下面有一个错误(致命错误:索引超出范围)

我定义了一个数组来保存从 Core 数据库中获取的数据

  var boundName  = [String]()
  var expenses = [NSManagedObject]()// variable to fetch the data from core database
  var num = 0// variable to hold the count of the fetched data

这里是pickerView的功能

public func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1;
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

    let request = NSFetchRequest <NSFetchRequestResult> (entityName : "ExpenseBound_Table")
    request.returnsObjectsAsFaults = false


    do {
        expenses = try self.context.fetch(request) as! [NSManagedObject]
       num = expenses.count

    } catch { print(error) }

    return num;
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {


    let request = NSFetchRequest <NSFetchRequestResult> (entityName : "ExpenseBound_Table")
    request.returnsObjectsAsFaults = false

    do{
    expenses = try self.context.fetch(request) as! [NSManagedObject]

        if expenses.count > 0 {


              let person = expenses[row] 
               let boundText = person.value(forKey: "boundName_Expense" ) as? String
              boundName [row] = boundText! //error fires here fatal error: Index out of range




        }

    }
    catch{
        print ("Fetch Faield")
    }
    return boundName[row]
}

【问题讨论】:

    标签: arrays swift xcode core-data uipickerview


    【解决方案1】:

    数组声明使用:

    var boundName = [String]()
    

    这种方式声明并没有指定数组的大小,所以当你运行下面这行时,它会崩溃:

    boundName [row] = boundText!
    

    解决方案:

    改用append

    boundName.append(boundText!)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      相关资源
      最近更新 更多