如何将新创建的数据模型的 ManagedObject 对象传递给函数?
How can I pass-on to a Function a newly created Object of ManagedObject of a Data Model?
我正在编写一个 IOS 应用程序,它从用户那里接收数据,我想将这些数据存储在两个不同的数据模型中,目的不同:
- 在临时数据模型 (= ReconciliationModel) 中,一旦设备有 运行 互联网连接和
与网络服务器同步
- 在功能数据模型 (= ProgramModel) 中,它是 ViewController 和应用程序能够运行的基础。
我希望用户能够在没有互联网连接的情况下工作。
因此,在将 Reconciliation-ManagedObject (=reconTask) 的新创建实例保存到第二个函数 (= apiCheckCodes) 之后,我试图传递它。不幸的是,这不起作用,我感谢您的帮助。这是代码:
`func setReconciliationList()->Void {
let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let managedObjectContext = appDelegate.managedObjectContext
let entityDescription = NSEntityDescription.entityForName("ReconciliationModel", inManagedObjectContext: managedObjectContext!)
let reconTask = ReconciliationModel(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)
reconTask.reconStatus = false
reconTask.reconType = 2
reconTask.reconUser = inputTextField.User
appDelegate.saveContext()
// if Internet available ...
redeemCodes(reconTask.managedObjectContext!)
}`
func apiCheckCodes(context: context: NSManagedObjectContext)-> Void {
let fetchRequest = NSFetchRequest(entityName: "ReconciliationModel")
var requestError: NSError?
let response = context.executeFetchRequest(fetchRequest, error: &requestError) as [ReconciliationModel!]
let reconObject = (response as NSArray).lastObject as ReconciliationModel
var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:3000/apicodecheck")!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var params = [
"user" : ReconObject.user,
"status" : ReconObject.status,
"programGoal" : String(ReconObject.programGoal)
]
var error: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &error)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
// API Redeem Post request
var task = session.dataTaskWithRequest(request, completionHandler: { (data, response, err) -> Void in
var conversionError: NSError?
var jsonDictionary = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableLeaves, error: &conversionError) as? NSDictionary
})
task.resume()
}
编辑:
我在第二个函数中使用 fetchRequest 找到了解决它的方法(见上文)。这是唯一的解决方案吗?
我发现我做错了什么,因此不再需要我在上面的编辑中使用 fetchRequest 描述的变通解决方案。
我用 "as ReconciliationModel" 错误地定义了第二个函数 (= apiCheckCodes),而不是像这样:
func verifiyScannedCode(reconObject: ReconciliationModel) {...}
现在我可以使用新创建的 ManagedObject 作为参数调用此函数
verifiyScannedCode(reconTask)
我正在编写一个 IOS 应用程序,它从用户那里接收数据,我想将这些数据存储在两个不同的数据模型中,目的不同:
- 在临时数据模型 (= ReconciliationModel) 中,一旦设备有 运行 互联网连接和 与网络服务器同步
- 在功能数据模型 (= ProgramModel) 中,它是 ViewController 和应用程序能够运行的基础。
我希望用户能够在没有互联网连接的情况下工作。
因此,在将 Reconciliation-ManagedObject (=reconTask) 的新创建实例保存到第二个函数 (= apiCheckCodes) 之后,我试图传递它。不幸的是,这不起作用,我感谢您的帮助。这是代码:
`func setReconciliationList()->Void {
let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let managedObjectContext = appDelegate.managedObjectContext
let entityDescription = NSEntityDescription.entityForName("ReconciliationModel", inManagedObjectContext: managedObjectContext!)
let reconTask = ReconciliationModel(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!)
reconTask.reconStatus = false
reconTask.reconType = 2
reconTask.reconUser = inputTextField.User
appDelegate.saveContext()
// if Internet available ...
redeemCodes(reconTask.managedObjectContext!)
}`
func apiCheckCodes(context: context: NSManagedObjectContext)-> Void {
let fetchRequest = NSFetchRequest(entityName: "ReconciliationModel")
var requestError: NSError?
let response = context.executeFetchRequest(fetchRequest, error: &requestError) as [ReconciliationModel!]
let reconObject = (response as NSArray).lastObject as ReconciliationModel
var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:3000/apicodecheck")!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var params = [
"user" : ReconObject.user,
"status" : ReconObject.status,
"programGoal" : String(ReconObject.programGoal)
]
var error: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &error)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
// API Redeem Post request
var task = session.dataTaskWithRequest(request, completionHandler: { (data, response, err) -> Void in
var conversionError: NSError?
var jsonDictionary = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableLeaves, error: &conversionError) as? NSDictionary
})
task.resume()
}
编辑: 我在第二个函数中使用 fetchRequest 找到了解决它的方法(见上文)。这是唯一的解决方案吗?
我发现我做错了什么,因此不再需要我在上面的编辑中使用 fetchRequest 描述的变通解决方案。
我用 "as ReconciliationModel" 错误地定义了第二个函数 (= apiCheckCodes),而不是像这样:
func verifiyScannedCode(reconObject: ReconciliationModel) {...}
现在我可以使用新创建的 ManagedObject 作为参数调用此函数
verifiyScannedCode(reconTask)