AppDelegate问题

时间:2015-03-16 07:20:03

标签: ios swift appdelegate

我正在研究我在Swift上的第一个项目。我是iOS新手。

我使用故事板创建各种屏幕,如注册,登录等。 “注册”屏幕从“登录”屏幕链接。但是,只要点击登录屏幕中的“注册”链接,应用就会崩溃。

我没有在默认视图控制器中定义任何内容。但是,我已经创建了注册用户视图控制器,我已经定义了App Delegate。 下面是我的注册用户视图控制器代码:

class RegisterUserViewController: UIViewController {


    @IBOutlet weak var FFName: UITextField!
    @IBOutlet weak var FEmail: UITextField!
    @IBOutlet weak var FPassword: UITextField!
    @IBOutlet weak var FAge: UITextField!
    @IBOutlet weak var FGender: UITextField!
    @IBOutlet weak var FLocation: UITextField!


    @IBAction func registerUser(sender: UIButton) {
        //define an app delegate
        //define a managed context
        //define an entity description
        //perform entity operation like add, delete, search
        //save the context

        var appDel = UIApplication.sharedApplication().delegate as AppDelegate
        var context:NSManagedObjectContext = appDel.managedObjectContext!
        var newUsr = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObjectContext

        newUsr.setValue("myusername", forKey: "username")
        newUsr.setValue(FFName, forKey: "fullname")
        newUsr.setValue(FEmail.text, forKey: "email")
        newUsr.setValue(FPassword.text, forKey: "password")
        newUsr.setValue(FAge, forKey: "age")
        newUsr.setValue(FGender, forKey: "gender")
        newUsr.setValue(FLocation, forKey: "location")

        context.save(nil)
        println(FFName.text)
        println(FEmail.text)
    }

请问您是否是使用App Delegates的正确方法,还是需要在AppDelegate.swift中定义任何内容?

欣赏任何信息。

由于

2 个答案:

答案 0 :(得分:1)

注意:一般建议

您正在从ViewController引用AppDelegate以获取上下文。

这样可以创建VC对appDelegate的依赖...不是最好的事情:D

两种选择: - 给视图控制器一个var ctx并从appDelegate传递给它 - 创建一个具有CD堆栈的DataStoreManager类。 (这会将此代码移出appDelegate,这是理想的恕我直言 - 设置CD堆栈并不真正属于控制器)

最后:它也归结为个人偏好

答案 1 :(得分:0)

请删除注册按钮并添加注册按钮..可能之前已声明操作,之后您更改了功能名称,因此产生了这种崩溃。

<强>解决方案

  • 如果有不必要的方法而不是删除它,请右键单击按钮并查看已绑定的操作方法。
  • 删除按钮并再次添加新按钮和绑定操作方法