2015-03-08 7 views
13

मुझे लगता है कि मैं कुछ पुरानी कोड में देख रहा हूँ द्वारा पालन किया जाना चाहिए: '?'तेजी से? एक फोन, सदस्य देखने, या सबस्क्रिप्ट

@IBAction func stockLevelDidChange(sender: AnyObject) { 
     if var currentCell = sender as? UIView { 
      while (true) { 
       currentCell = currentCell.superview!; 
       if let cell = currentCell as? ProductTableCell { 
        if let id = cell.productId? { 
         var newStockLevel:Int?; 
         if let stepper = sender as? UIStepper { 
          newStockLevel = Int(stepper.value); 
         } 
         else if let textfield = sender as? UITextField { 
          if let newValue = textfield.text.toInt()? { 
           newStockLevel = newValue; 
          } 
         } 
         if let level = newStockLevel { 
          products[id].4 = level; 
          cell.stockStepper.value = Double(level); 
          cell.stockField.text = String(level); 
         } 
        } 
       break; 
       } 
      } 
      displayStockTotal(); 
     } 
    } 

लेकिन समारोह की पहली पंक्ति में मैं " एक कॉल, सदस्य लुकअप, या सबस्क्रिप्ट के बाद "(as के बाद प्रश्न चिह्न के लिए)

इस त्रुटि का क्या अर्थ है और स्विफ्ट 1.2 के लिए यह कोड कैसे बदलता है?

उत्तर

17

वास्तव में as? सभी ठीक हैं। समस्या यह लाइन है:

if let id = cell.productId? 

बस इसके अंत में प्रश्न चिह्न हटा दें। इसका कोई मतलब नही बनता।

+0

यह काम करता है। लेकिन एक्सकोड क्यों दिखाता है कि त्रुटि 'if var currentCell = प्रेषक के रूप में है? UIView' लाइन? – soleil

0

समस्या if let newValue = textfield.text.toInt()? { है .. यदि toInt()Int? देता है तो बस ? से छुटकारा पाएं।

+3

दिलचस्प यह केवल स्विफ्ट 1.2 में कोई त्रुटि है: तो,

if let newValue = textfield.text.toInt()? 

के साथ प्रतिस्थापित किया जाना चाहिए। स्विफ्ट 1.1 में यह वास्तव में संकलित करता है और काम करता है। –

+0

इसके पीछे भाषा कारण क्या है? मेरे पास '' 'के लिए एक ही त्रुटि है (अगर self.cat?! = Nil) {वापसी स्वयं}' ' – loretoparisi

0

1.2 में, toInt चला गया है।

if let newValue:Int? = Int(textField.text!) 
संबंधित मुद्दे