2014-07-20 9 views
5

मैं यहां बहुत स्टंप हूं - मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरा ऐप स्थानीय नोटिफिकेशन से लॉन्च हुआ है या नहीं। लेकिन मेरा पूरा कोड बोर्क किया गया है।स्विफ्ट में लॉन्चऑप्शन की जांच कैसे करें?

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool { 
    var firstWay = launchOptions.objectForKey(UIApplicationLaunchOptionsLocalNotificationKey) 
    var secondWay = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey] 
    return true 
} 
इनमें से

दोनों संदेश

"unexpectedly found nil while unwrapping an Optional value" 

मुझे यकीन है कि मैं गलत तरीके से यहाँ बहुत ही बुनियादी कुछ कर रही हूं साथ असफल। कोई संकेतक?

उत्तर

16

आप लॉन्च ऑप्शन डिक्शनरी को अनचाहे कर रहे हैं, जो अक्सर आपके तर्कों में शून्य होता है। एक शून्य मूल्य को खोलने की कोशिश करने से दुर्घटना हो जाएगी, इसलिए आपको यह जांचने की ज़रूरत है कि पीछे हटने के लिए पिछली विस्मयादिबोधक बिंदु का उपयोग करने से पहले यह शून्य नहीं है। सही कोड इस प्रकार है:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 
    if let options = launchOptions { 
     // Do your checking on options here 
    } 

    return true 
} 
8

तुम भी ऐसा कर सकते हैं,

let notification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as! UILocalNotification! 
if (notification != nil) { 
    // Do your stuff with notification 
} 
+0

यह अगर अधिसूचना नहीं के बराबर है दुर्घटना होगा, यहां तक ​​कि अपने परीक्षण तक पहुँचने से पहले। आपको "जैसे! UILocalNotification" जैसी चीजें नहीं लिखनी चाहिए! –

9

स्पष्ट तरीका:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    if let notification:UILocalNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification { 
     //do stuff with notification 
    } 
    return true 
} 
संबंधित मुद्दे