2014-09-09 2 views
1

방금 ​​Xcode 6의 GM으로 업데이트되었으며 오류가 수정되었습니다. 나는 그러나 하나의 특정 오류에 붙어있어. 이 라인에조건부 바인딩 오류의 바운드 값

Bound value in a conditional binding must be of Optional type. 

: 나는 오류가

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    if (editingStyle == UITableViewCellEditingStyle.Delete) { 
     if let tv=tableView { 
      if tableView == self.searchDisplayController?.searchResultsTableView { 
       UITableViewCellEditingStyle.None 
      } else { 
      var valueToRemove: AnyObject! = unformatted.objectAtIndex(indexPath.row) 
      //println(valueToRemove) 

      if images.objectAtIndex(indexPath.row) as NSObject == 0 { 
       totalSpendingsCounter = totalSpendingsCounter - Double(valueToRemove as NSNumber) 
       NSUserDefaults.standardUserDefaults().setDouble(totalSpendingsCounter, forKey: "spendingsCounter") 
      } else if images.objectAtIndex(indexPath.row) as NSObject == 1 { 
       totalCreditCounter = totalCreditCounter - Double(valueToRemove as NSNumber) 
       NSUserDefaults.standardUserDefaults().setDouble(totalCreditCounter, forKey: "creditCounter") 
      } 

      currencyDouble = NSUserDefaults.standardUserDefaults().doubleForKey("currencyCounter") 
      currentBudgetCalculation = currencyDouble + totalCreditCounter - totalSpendingsCounter 

      newTransactionEntered = true 

      var formatter = NSNumberFormatter() 
      formatter.numberStyle = .CurrencyStyle 
      formatter.locale = NSLocale.currentLocale() // This is the default 
      var formattedNumberCurrent = formatter.stringFromNumber(currentBudgetCalculation) 

      var defaults = NSUserDefaults(suiteName: "group.AffordIt") 
      defaults.setObject(formattedNumberCurrent, forKey: "currentBudgetWidget") 
      defaults.setObject(newTransactionEntered, forKey: "new") 

      values.removeObjectAtIndex(indexPath.row) 
      images.removeObjectAtIndex(indexPath.row) 
      names.removeObjectAtIndex(indexPath.row) 
      dates.removeObjectAtIndex(indexPath.row) 
      unformatted.removeObjectAtIndex(indexPath.row) 

      NSUserDefaults.standardUserDefaults().setObject(names, forKey: "names") 
      NSUserDefaults.standardUserDefaults().setObject(values, forKey: "values") 
      NSUserDefaults.standardUserDefaults().setObject(dates, forKey: "dates") 
      NSUserDefaults.standardUserDefaults().setObject(unformatted, forKey: "unformatted") 
      NSUserDefaults.standardUserDefaults().setObject(images, forKey: "images") 

      tv.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
      } 
     } 
    } 
} 

: 여기

내 코드입니다

if let tv=tableView { 

나는 난 있도록 프로그래밍 꽤 새로운 해요 확실한 수정이 있었는지 확신 할 수는 있지만, 조사를하고 물건을 시험해 본 후에는 그것을 식별 할 수 없었습니다.

답변

2

Xcode 6 베타 7부터 UITableView 매개 변수 tableView:commitEditingStyle:forRowAtIndexPath:은 더 이상 선택 사항이 아닙니다. 따라서 선택적 바인딩을 사용하여 랩핑을 시도 할 수 없습니다.

이 문제를 해결하려면 코드를 변경해야합니다. 이제, 귀하의 선택적인 바인딩이 더 이상 필요하지 않다고 생각합니다 ...