2015-01-28 7 views
5

तो मेरे पास मेरे मुख्य एप्लिकेशन से निर्मित एक आज का व्यू विजेट है, और मैं कुछ संग्रहीत डेटा (कोरडाटा के माध्यम से) तक पहुंचने का प्रयास कर रहा हूं। लेकिन जब मैं अपनी इकाइयों में से एक को संभालने के लिए आलसी चर बना रहा हूं, तो यह संकलन करने में विफल रहता है। मैं समझता हूं कि यह फेंकता है, लेकिन मुझे यकीन नहीं है कि इसे कैसे संभालें/ठीक करें।आज के दृश्य विजेट से AppDelegate का संदर्भ कैसे लें?

lazy var managedObjectContext : NSManagedObjectContext? = { 
    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
    if let managedObjectContext = appDelegate.managedObjectContext { 
     return managedObjectContext 
    } 
    else { 
     return nil 
    } 
    }() 

त्रुटि पंक्ति 2 पर पर फेंक दिया जाता है पर ... "AppDelegate के रूप में" है कि यह एक है "AppDelegate की अघोषित उपयोग।" जो मुझे लगता है वह समझ में आता है क्योंकि AppDelegate बेस एप्लिकेशन फ़ोल्डर में है और विजेट के फ़ोल्डर में नहीं है। लेकिन मुझे इस बात की हानि हो रही है कि इसे कैसे बदला या मरम्मत करें ताकि कोड संकलित और कार्य करेगा। कोई विचार?

उत्तर

2

आप नहीं कर सकते। एक्सटेंशन आपके मुख्य ऐप बंडल से पूरी तरह से अलग-अलग बाइनरी हैं, जहां आपका ऐप प्रतिनिधि रहता है। आपको या तो साझा लाइब्रेरी बनाना होगा जिसका उपयोग आपके मुख्य ऐप बंडल और एक्सटेंशन द्वारा किया जाएगा, या बहुत सारे कॉपी-पेस्टिंग कोड (पूर्व विधि को प्राथमिकता दी जाती है)।

developer guides से:

आप अपने ऐप विस्तार और उसके युक्त एप्लिकेशन के बीच कोड साझा करने के लिए एक एम्बेडेड ढांचा बना सकते हैं। उदाहरण के लिए, यदि आप अपने फोटो संपादन एक्सटेंशन में उपयोग के लिए फ़िल्टर के साथ-साथ में ऐप युक्त फ़िल्टर विकसित करते हैं, तो फ़िल्टर के कोड को ढांचे में रखें और दोनों लक्ष्यों में ढांचे को एम्बेड करें।

यदि आप नहीं चाहते हैं तो आपको औपचारिक लिंक करने योग्य लाइब्रेरी बनाने की आवश्यकता नहीं है। बस यह सुनिश्चित करें कि जिस पुस्तकालय को आप लिख रहे हैं वह एपीआई का संदर्भ नहीं देता है जो एक्सटेंशन के लिए उपलब्ध नहीं है।

सुनिश्चित करें कि आपके एम्बेडेड ढांचे Some APIs Are Unavailable to App Extensions में वर्णित के रूप एप्लिकेशन एक्सटेंशन में अनुपलब्ध एपीआई शामिल नहीं है, बनाओ। यदि आपके पास ऐसे कस्टम फ्रेमवर्क हैं जिनमें ऐसे एपीआई हैं, तो आप अपने ऐप से सुरक्षित रूप से लिंक कर सकते हैं लेकिन ऐप के निहित एक्सटेंशन के साथ उस कोड को साझा नहीं कर सकते हैं। ऐप स्टोर किसी भी ऐप एक्सटेंशन को अस्वीकार करता है जो इस तरह के ढांचे से लिंक करता है या अन्यथा अनुपलब्ध API का उपयोग करता है।

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