2016-07-26 8 views
5

में मौजूद है या नहीं, मैं एक ऐसा ऐप बना रहा हूं जो मैं बना रहा हूं।यह जांचने के लिए कि कोई स्टोरीबोर्ड किसी विशिष्ट NSBundle

ढांचे में स्टोरीबोर्ड हैं लेकिन कुछ मामलों में ढांचे के प्रोजेक्ट बनाने के लिए एक नया प्रदान करके स्टोरीबोर्ड को ओवरराइड करने की आवश्यकता होगी।

तो मेरा लक्ष्य यह जांचना है कि किसी दिए गए नाम वाला स्टोरीबोर्ड [NSBundle mainBundle] में मौजूद है, तो नहीं, तो मुझे अपने ढांचे से मूल संस्करण प्राप्त होगा।

मैंने मुख्य बंडल से स्टोरीबोर्ड प्राप्त करने की कोशिश की है और परिणाम नील की जांच कर रहा है, लेकिन अगर यह नहीं मिल पाता है तो यह अपवाद फेंकता है। तो मैंने अपवाद को पकड़ने की कोशिश की और फिर फ्रेमवर्क से स्टोरीबोर्ड लोड किया। यह काम करता है लेकिन यह गंदा लगता है और यह मेरे ऐप के प्रदर्शन को अच्छी तरह से प्रभावित कर सकता है।

मैं भी बंडल में pathForResource की कोशिश की है:

if([[NSBundle mainBundle] pathForResource:name ofType:@"storyboard"] != nil) { 

} 

लेकिन यह कभी नहीं स्टोरीबोर्ड पाता है।

क्या किसी को किसी अन्य तरीके से पता है कि मैं जांच सकता हूं कि एक स्टोरीबोर्ड एक विशिष्ट बंडल में मौजूद है या नहीं?

+0

जब से तुम क्रम में आवेदन बंडल में नहीं लिख सकते हैं आप को पता है कि वास्तव में क्या संकलन समय पर बंडल में है अपेक्षा की जाती है ... – vadian

+0

कोड ढांचे में है। इसलिए मैं मुख्य बंडल में जो ढांचा लगाया गया है, उस ढांचे से नहीं बता सकता .. – Swinny89

+0

यह नहीं पता कि इससे मदद मिलेगी, लेकिन एक संकलित स्टोरीबोर्ड में "स्टोरीबोर्ड" का फ़ाइल एक्सटेंशन है। –

उत्तर

7

तो, मैं लगभग वही था जो मैं पहले से ही कोशिश कर रहा था। मेरे प्रश्न पर एक टिप्पणी के अनुसार, स्टोरीबोर्ड के लिए संकलित एक्सटेंशन "स्टोरीबोर्ड" है। तो मैं जांच कर सकते हैं या नहीं, एक स्टोरीबोर्ड तो जैसे एक बंडल में मौजूद है:

if([[NSBundle mainBundle] pathForResource:name ofType:@"storyboardc"] != nil) { 
    //The storyboard exists 
} else { 
    //The storyboard isn't in the bundle, get it from the framework bundle. 
} 
+1

'स्टोरीबोर्ड' में "सी" महत्वपूर्ण है क्योंकि हम कंपाइलर स्टोरीबोर्ड फ़ाइल की तलाश में हैं! –

+0

@MaththieuRiegler, @ Swinny89 क्या आपको पता है कि 'स्टोरीबोर्ड' का उपयोग ऐपस्टोर के लिए अस्वीकृति कारण है? – eMdOS

+0

यह एक निजी एपीआई का उपयोग नहीं है, नहीं। –

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