我有一个使用解析作为后端的iPhone应用程序。我已经成功地集成了所有内容。我已经对它进行了测试,并且它在我的设备(模拟器和物理设备)上运行良好。 问题是我的客户抱怨在尝试从Parse获取数据时应用程序在他们的设备上崩溃。
可能是什么问题?
答案 0 :(得分:1)
由于网络问题,很可能会发生这种情况,例如,如果设备处于飞行模式。当设备处于离线模式时,它会尝试几次并抛出;
0xa3884: b 0xa3860; _40-[PFTask thenCallBackOnMainThreadAsync:]block_invoke_2 + 340 at PFTask.m:329
控制台将说明;
Terminating app due to uncaught exception 'NSInternalInconsistencyException'....
这可能是您的理由,也可能不是,但有可能。
此外,我可以向您的客户建议Fabric.io用户发布您的应用。因此,您可以清楚地了解应用程序崩溃的时间,方式和原因。希望这会有所帮助。
答案 1 :(得分:1)
我建议明确添加一个解析api来监控崩溃等...
试试这个:http://try.crashlytics.com/sdk/
此外,您应该在部署与后端通信的应用程序时实施网络检查,以便您可以控制任何网络方案。
试试这个:https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html
您是否也尝试从设备中删除该应用并下载客户的方式?
崩溃也不具体。它只是悬挂,是否会杀死应用程序等......?如果您知道客户让他们检查设备日志并通过副本发送给您。
答案 2 :(得分:0)
Parse可能不是问题 您是否尝试在模拟器上“重置内容和设置”并再次启动应用程序?它仍然有用吗?
另一种可能性是你以错误的方式管理来自解析请求的错误。
示例:
func postNewPerson(person: Person?, completion: (success: Bool, result: Person?, error: NSError?) -> Void) {
var p = PFObject(className: "Person")
p["name"] = person.name
p["lastName"] = person.lastName
p.saveInBackgroundWithBlock {
(success: Bool, error: NSError?) -> Void in
if (success) {
completion(success: true, result: person, error: nil)
} else {
completion(success: nil, result: nil, error: error)
}
}
}
当你调用这个函数时,你必须测试成功/错误:
service.postNewPerson(person: person) { (success, result, error) -> Void in
if error != nil && success == true {
/* Your request is ok */
} else {
/* Something wrong */
}
}
答案 3 :(得分:0)