2014-09-26 6 views
5

मैं तेजी में कुछ सरल UIView लेआउट गणित करने की कोशिश की और निम्न कोड पंक्ति कोशिश की ...तेजी से CGFloats के साथ गणित करने का सबसे अच्छा तरीका क्या है?

var offset: CGFloat = (bounds.width/2.0) - ((sortedSymptoms.count * bounds.height)/2.0) 

और संकलक से निम्न त्रुटि मिला:

cannot invoke '-' with an argument list of type '(($T6), ($T17))' 
     var offset: CGFloat = (bounds.width/2.0) - ((sortedSymptoms.count * bounds.height)/2.0) 
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

संकलक त्रुटि प्रतिसाद नहीं यह सब सहायक नहीं है, लेकिन ऐसा लगता है कि किसी प्रकार के डबल, इंट और CGFloat के बीच एक प्रकार का संघर्ष है। मैं CGFloats की कुछ स्पष्ट रचनाओं में छिड़काव करके संकलित करने के लिए लाइन प्राप्त करने में सक्षम था, लेकिन मुझे विश्वास नहीं है कि यह करने का यह सही तरीका है।

var offset: CGFloat = (bounds.width/CGFloat(2.0)) - ((CGFloat(sortedSymptoms.count) * bounds.height)/CGFloat(2.0)) 

सही तरीका क्या है?

उत्तर

7

यह स्विफ्ट में एक ज्ञात मुद्दा है और देव टीम विशेष रूप से CGFloat के आसपास इस मुद्दे को बेहतर बनाने के लिए काम कर रही है। लेकिन इस समय, हाँ, इस तरह आप इसे लिखते हैं।

devforums से कुछ फॉलोअप (जो आप खुश हैं या दुखी कर सकता है, लेकिन कम से कम मोटे तौर पर वर्तमान स्थिति बताते हैं): https://devforums.apple.com/message/1026028#1026028

ध्यान दें कि यहां मुख्य मुद्दा यह है कि शाब्दिक 2.0 CGFloat लिए मजबूर नहीं करता है, जो तर्कसंगत रूप से चाहिए। लेकिन count को इरादे से हमेशा एक कलाकार की आवश्यकता होगी। आप हमेशा संख्यात्मक प्रकारों के बीच सुरक्षित रूप से परिवर्तित नहीं हो सकते हैं, और स्विफ्ट जानबूझकर आपको इस तरह के कास्ट करने पर विचार करने के लिए मजबूर करता है। लेकिन यह निर्धारित करना संभव होना चाहिए कि संकलन समय पर एक शाब्दिक रूपांतरण सुरक्षित है या नहीं, ताकि इसे ठीक किया जा सके।

+0

devforums लिंक के लिए धन्यवाद, हाँ यह बुरा है, लेकिन समझ में आता है। मुझे उम्मीद है कि वे एक सुरुचिपूर्ण समाधान का पता लगाएंगे, और मुझे उम्मीद है कि हम इसका उपयोग शुरू करने से पहले अगले डब्ल्यूडब्ल्यूडीसी के लिए इंतजार नहीं करना पड़ेगा। –

संबंधित मुद्दे