我正在研究我在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中定义任何内容?
欣赏任何信息。
由于
答案 0 :(得分:1)
您正在从ViewController引用AppDelegate以获取上下文。
这样可以创建VC对appDelegate的依赖...不是最好的事情:D
两种选择: - 给视图控制器一个var ctx并从appDelegate传递给它 - 创建一个具有CD堆栈的DataStoreManager类。 (这会将此代码移出appDelegate,这是理想的恕我直言 - 设置CD堆栈并不真正属于控制器)
最后:它也归结为个人偏好
答案 1 :(得分:0)
请删除注册按钮并添加注册按钮..可能之前已声明操作,之后您更改了功能名称,因此产生了这种崩溃。
<强>解决方案强>