2010-02-16 10 views
8

मेरा ऐप बचत एक उपयोगकर्ता को वॉल्यूम स्लाइडर और UIImage विचारों के रूप में विशिष्ट वस्तुओं खींचें करने के लिए सक्षम किया जा रहा शामिल है। मेरा लक्ष्य आइटमों के स्थानों को सहेजने में सक्षम होना है ताकि उपयोगकर्ता को पुनः लॉन्च करने के बाद आइटम को फिर से खींचना न पड़े। दुर्भाग्यवश, मैंने CGRect rect = item.frame को NSuserDefaults या NSKeyedArchiver 'मार्ग पर सहेजने के साथ त्रुटियां देखी हैं। कोई अन्य सुझाव?NSKeyedArchiver/NSUserDefaults - एक CGRect

उत्तर

11

यदि आप आईफोन पर कुंजी संग्रहित कर रहे हैं, तो UIKit विशेष रूप से इस तरह दिखने वाले एक जोड़े का समर्थन करता है: -encodeCGRect:forKey: और यह वही करता है जो आप चाहते हैं। NSCoder's UIKit additions के लिए ऐप्पल दस्तावेज़ देखें।

यदि आप NSUserDefaults का उपयोग कर रहे हैं, तो आपको CGRects के लिए एक स्पष्ट एन्कोडर का उपयोग करने की विलासिता नहीं मिलती है, लेकिन कुछ अन्य उत्तरों के अनुसार, आप उन्हें NSStringFromCGRect() और इसके विपरीत का उपयोग करके स्ट्रिंग के रूप में सहेज सकते हैं।

0

आप शायद CGRectNSData का उपयोग कर और फिर NSDataNSUserDefaults या NSKeyedArchiver का उपयोग कर वस्तु की दुकान सांकेतिक शब्दों में बदलना होगा।

मुझे यकीन है कि क्या वास्तव में त्रुटियों आप अपने प्रश्न में बात कर रहे हैं नहीं कर रहा हूँ, हो सकता है और अधिक स्पष्टीकरण की जरूरत?

-4

आप NSNumbers को CGRect में तैरता बदलने और फिर उन्हें एक शब्दकोश में डालने के लिए किया है।

आप CGRects का एक बहुत स्टोर करने के लिए की जरूरत है, मैं archivable NSNumber विशेषताओं के रूप में CGRect तत्वों के साथ एक छोटे से हल्के वर्ग बनाने की सलाह देते। एक प्रारंभिक निर्माता बनाएं जो एक सीजीआरईटी लेता है। फिर जल्दी NSCoder प्रोटोकॉल तरीकों बारे में तो संपूर्ण वस्तु

इस तरह आप आप जल्दी और आसानी से परिवर्तित, स्टोर कर सकते हैं संग्रहीत किया जा सकता है और फिर CGRects पुनः प्राप्त।

+4

नीचे की जांच के साथ एक टिप्पणी अच्छी होगी। यदि कुछ और नहीं है, तो यह मुझे बताता है कि मैं गलत क्यों हूं। मैंने दृष्टिकोण लिया कि 'सीजीईजीईटी' को संख्याओं के रूप में संग्रहीत करने की आवश्यकता है ताकि उन्हें संख्याओं के रूप में छेड़छाड़ की जा सके। यदि आपको सक्रिय रूप से 'सीजीईजीईटी' के बड़े सेट को प्रबंधित करने की आवश्यकता है, तो एक रैपर वर्ग लंबे समय तक बहुत समय और प्रयास बचाता है। – TechZen

16

आप NSStringFromgCGRect() और CGRectFromString() का उपयोग उन्हें स्टोर करने के लिए कर सकता है।

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