2016-08-09 37 views
0

i einfache Nachricht speichert in NSMutableArraygefunden unerwartet null, während ein optionalen Wert Abwickeln

dieser ersten View-Controller

import UIKit 
import MessageUI 
import Contacts 
import ContactsUI 

class OneView: UIViewController, MFMessageComposeViewControllerDelegate,CNContactPickerDelegate,UIAlertViewDelegate { 

@IBAction func save(sender: AnyObject) { 

     if (NewSmu.text! == "") { 
      let alert = UIAlertController(title: nil, message: "Please enter message.", preferredStyle: UIAlertControllerStyle.Alert) 

      alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 

      self.presentViewController(alert, animated: true, completion: nil) 

     } else { 
      let uDefault = NSUserDefaults.standardUserDefaults() 
      var templates: NSMutableArray? 

      if templates != nil { 

      templates = NSMutableArray(array: uDefault.arrayForKey("TEMPLATES")!) 

      } 
      if ((templates?.containsObject(NewSmu.text)) != nil) { 
       templates!.addObject(NewSmu.text) 
       uDefault.setObject(templates, forKey: "TEMPLATES") 
      } 

      let alert = UIAlertController(title: "Success", message: "Template saved.", preferredStyle: UIAlertControllerStyle.Alert) 


      alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 

      self.presentViewController(alert, animated: true, completion: nil) 
     } 
    } 
} 

dieser zweiten View-Controller

import UIKit 
class TwoView: UIViewController { 

    @IBOutlet weak var tableView: UITableView! 
    var templates = NSMutableArray() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     let uDefault = NSUserDefaults.standardUserDefaults() 
     self.templates = NSMutableArray(array: uDefault.arrayForKey("TEMPLATES")!) 
    } 
} 
+0

Welche Linie verursacht Fehler ?? –

+0

setzen Sie den Ausnahme-Breakpoint und Sie erfahren, welche Zeile den Fehler verursacht –

+1

Was ist NewSmu ???? –

Antwort

0

Sie haben einige Probleme in save und viewWillAppear Funktionen. Sie müssen überprüfen, ob ein gespeichertes Array in den Standardeinstellungen des Benutzers vorhanden ist. Sie können diesen Code versuchen:

Erste-View-Controller:

@IBAction func save(sender: AnyObject) { 
    let alert = UIAlertController(title: nil, message: "Please enter message.", preferredStyle: UIAlertControllerStyle.Alert) 
    if NewSmu.text?.isEmpty == false { 
     var templates = NSMutableArray() 
     let uDefault = NSUserDefaults.standardUserDefaults() 
     if let savedArray = uDefault.arrayForKey("TEMPLATES") { 
      templates = NSMutableArray(array: savedArray) 
     } 
     if !templates.containsObject(NewSmu.text) { 
      templates.addObject(NewSmu.text) 
      uDefault.setObject(templates, forKey: "TEMPLATES") 
     } 
     alert.title = "Success" 
     alert.message = "Template saved." 
    } 
    alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil)) 
    presentViewController(alert, animated: true, completion: nil) 
} 

Second-View-Controller:

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    if let savedArray = NSUserDefaults.standardUserDefaults().arrayForKey("TEMPLATES") { 
     templates = NSMutableArray(array: savedArray) 
    } 
} 
+0

dieser Code ist Arbeit, aber die zweite Ansicht Controller ist das erste Mal ist (unerwartet gefunden Null beim Entpacken ein optionaler Wert Fehler) –

+0

@PatelAnkit haben Sie Ihre AnsichtWillAppear geändert? –

+1

Persönlich möchte ich Ihnen danken, dass Sie sich Mühe gegeben haben, dies zu schreiben. –