我正在做关于Swift的第一个项目。我对iOS本身并不熟悉。
我创建各种屏幕,如注册,登录等使用故事板。寄存器屏幕是从屏幕中的标志链接。但是,当我点击屏幕上标志中的“注册”链接时,应用程序就会崩溃。
我还没有在默认视图控制器中定义任何东西。但是,我已经创建了注册用户视图控制器,我在其中定义了App。下面是注册用户视图控制器的代码:
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)
}请您建议一下,这是否是使用AppDelegate.swift的正确方式,还是我需要在AppDelegate.swift中定义任何东西?
感谢你提供的任何信息。
谢谢
发布于 2015-03-16 07:36:07
注:一般意见
您正在从AppDelegate引用ViewController以获取上下文。
这是可行的,但是创建了VC对appDelegate的依赖.不是最美好的事情:D
两个替代方案:-给视图控制器一个var ctx并从appDelegate传递给它--创建一个具有CD堆栈的DataStoreManager类。(这将代码从appDelegate中移出,这是理想的IMHO --设置CD堆栈并不真正属于控制器)
最后,这也取决于个人的喜好。
发布于 2015-03-16 07:33:11
请删除注册按钮和agin添加注册按钮。可能是以前声明的动作在那里,在那之后你已经更改了函数名,所以这种崩溃就会发生。
解决方案
https://stackoverflow.com/questions/29071475
复制相似问题