Php 如何修复此问题以使用xml解析器还原代码?因为一个错误 func postdrestore(参数:Dictionary,viewController:UIViewController,postCompleted:(状态:String,genSettingsArray:NSArray,tmplArray:NSArray,tilerray:NSArray)->()){ 让url=NSURL(字符串:postURL) var xmlParse:NSString=“” var数据:NSData! let request=NSMutableURLRequest(URL:URL!) request.setValue(“application/json;charset=utf-8”,forHTTPHeaderField:“内容类型”) request.HTTPMethod=“POST” 设param=params var错误:N错误? 如果let body=NSJSONSerialization.dataWithJSONObject(参数,选项:nil,错误:&error){ request.HTTPBody=body }否则{ println(“JSON错误:\(错误)”) } 让task=NSURLSession.sharedSession().dataTaskWithRequest(请求){(数据、响应、错误)位于 println(响应) var strData=NSString(数据:数据,编码:NSUTF8StringEncoding) println(strData!) 如果数据==nil{ println(“dataTaskWithRequest错误:\(错误)”) 返回 } let parser=NSXMLParser(数据:data) parser.delegate=self parser.parse() 后完成(状态:strData!作为字符串,genSettingsArray:self.generalSettingsArray,tmplArray:self.tmplArray,tileray:self.tileray) var page1=self.generalSettingsArray.valueForKey(“page1”)as!NSArray var page2=self.generalSettingsArray.valueForKey(“page2”)as!NSArray var page3=self.generalSettingsArray.valueForKey(“page3”)as!NSArray var page4=self.generalSettingsArray.valueForKey(“page4”)as!NSArray var page5=self.generalSettingsArray.valueForKey(“page5”)as!NSArray 对于第1页中的p1{ self.pagesArray.append(p1为!字符串) } 对于第2页中的p2{ self.pagesArray.append(p2为!字符串) } 对于第3页中的p3{ self.pagesArray.append(p3为!字符串) } 对于第4页中的p4{ self.pagesArray.append(p4 as!String) } 对于第5页中的p5{ self.pagesArray.append(p5作为!字符串) } 对于self.pagesArray中的页面{ self.pageId=self.pageId+1 让realm=realm() 让page=Pages() page.id=self.pageId page.pageTitle=页面 realm.write{ realm.add(第页,更新:true) 用于self.generalSettingsArray中的设置{ realm.create(GeneralSettings.self,值:设置,更新:true) } 对于self.tmplArray中的tmpl{ create(Templates.self,值:tmpl,更新:true) } 对于self.tileray中的瓷砖{ realm.create(Tile.self,值:Tile,更新:true) } } } println(Realm.defaultPath) } task.resume() }

Php 如何修复此问题以使用xml解析器还原代码?因为一个错误 func postdrestore(参数:Dictionary,viewController:UIViewController,postCompleted:(状态:String,genSettingsArray:NSArray,tmplArray:NSArray,tilerray:NSArray)->()){ 让url=NSURL(字符串:postURL) var xmlParse:NSString=“” var数据:NSData! let request=NSMutableURLRequest(URL:URL!) request.setValue(“application/json;charset=utf-8”,forHTTPHeaderField:“内容类型”) request.HTTPMethod=“POST” 设param=params var错误:N错误? 如果let body=NSJSONSerialization.dataWithJSONObject(参数,选项:nil,错误:&error){ request.HTTPBody=body }否则{ println(“JSON错误:\(错误)”) } 让task=NSURLSession.sharedSession().dataTaskWithRequest(请求){(数据、响应、错误)位于 println(响应) var strData=NSString(数据:数据,编码:NSUTF8StringEncoding) println(strData!) 如果数据==nil{ println(“dataTaskWithRequest错误:\(错误)”) 返回 } let parser=NSXMLParser(数据:data) parser.delegate=self parser.parse() 后完成(状态:strData!作为字符串,genSettingsArray:self.generalSettingsArray,tmplArray:self.tmplArray,tileray:self.tileray) var page1=self.generalSettingsArray.valueForKey(“page1”)as!NSArray var page2=self.generalSettingsArray.valueForKey(“page2”)as!NSArray var page3=self.generalSettingsArray.valueForKey(“page3”)as!NSArray var page4=self.generalSettingsArray.valueForKey(“page4”)as!NSArray var page5=self.generalSettingsArray.valueForKey(“page5”)as!NSArray 对于第1页中的p1{ self.pagesArray.append(p1为!字符串) } 对于第2页中的p2{ self.pagesArray.append(p2为!字符串) } 对于第3页中的p3{ self.pagesArray.append(p3为!字符串) } 对于第4页中的p4{ self.pagesArray.append(p4 as!String) } 对于第5页中的p5{ self.pagesArray.append(p5作为!字符串) } 对于self.pagesArray中的页面{ self.pageId=self.pageId+1 让realm=realm() 让page=Pages() page.id=self.pageId page.pageTitle=页面 realm.write{ realm.add(第页,更新:true) 用于self.generalSettingsArray中的设置{ realm.create(GeneralSettings.self,值:设置,更新:true) } 对于self.tmplArray中的tmpl{ create(Templates.self,值:tmpl,更新:true) } 对于self.tileray中的瓷砖{ realm.create(Tile.self,值:Tile,更新:true) } } } println(Realm.defaultPath) } task.resume() },php,swift,realm,Php,Swift,Realm,因为当它响应我时,我遇到了这样的错误: func postRestore(params : Dictionary<String, AnyObject!>, viewController: UIViewController, postCompleted: (status: String, genSettingsArray: NSArray, tmplArray: NSArray, tileArray: NSArray) -> ()) { let url = NSU

因为当它响应我时,我遇到了这样的错误:

func postRestore(params : Dictionary<String, AnyObject!>, viewController: UIViewController, postCompleted: (status: String, genSettingsArray: NSArray, tmplArray: NSArray, tileArray: NSArray) -> ()) {

       let url = NSURL(string: postURL)
       var xmlParse:NSString  = ""
       var data : NSData!
       let request = NSMutableURLRequest(URL: url!)
       request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
       request.HTTPMethod = "POST"
       let param = params
       var error: NSError?
       if let body = NSJSONSerialization.dataWithJSONObject(param, options: nil, error: &error) {
           request.HTTPBody = body
       } else {
           println("JSON error: \(error)")
       }

       let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
           println(response)

           var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
           println(strData!)

           if data == nil {
               println("dataTaskWithRequest error: \(error)")
               return
           }

           let parser = NSXMLParser(data: data)
           parser.delegate = self
           parser.parse()

           postCompleted(status: strData! as String, genSettingsArray: self.generalSettingsArray, tmplArray: self.tmplArray, tileArray: self.tileArray)

           var page1 = self.generalSettingsArray.valueForKey("page1") as! NSArray
           var page2 = self.generalSettingsArray.valueForKey("page2") as! NSArray
           var page3 = self.generalSettingsArray.valueForKey("page3") as! NSArray
           var page4 = self.generalSettingsArray.valueForKey("page4") as! NSArray
           var page5 = self.generalSettingsArray.valueForKey("page5") as! NSArray

           for p1 in page1 {
               self.pagesArray.append(p1 as! String)
           }
           for p2 in page2 {
               self.pagesArray.append(p2 as! String)
           }
           for p3 in page3 {
               self.pagesArray.append(p3 as! String)
           }
           for p4 in page4 {
               self.pagesArray.append(p4 as! String)
           }
           for p5 in page5 {
               self.pagesArray.append(p5 as! String)
           }



           for pages in self.pagesArray {
               self.pageId = self.pageId + 1
               let realm = Realm()
               let page = Pages()
               page.id = self.pageId
               page.pageTitle = pages

               realm.write {

                   realm.add(page, update: true)

                   for settings in self.generalSettingsArray {
                       realm.create(GeneralSettings.self, value: settings, update: true)
                   }
                   for tmpl in self.tmplArray {
                       realm.create(Templates.self, value: tmpl, update: true)
                   }
                   for tile in self.tileArray {
                       realm.create(Tile.self, value: tile, update: true)
                   }

               }
           }

           println(Realm.defaultPath)
       }
       task.resume()

   }
{URL:http://www.cloudstaff.com/sendmail/csa_restore.php }{状态代码:200,标题{
“缓存控制”=“无存储,无缓存,必须重新验证,后检查=0,预检查=0”;
连接=“保持活动”;
“内容编码”=gzip;
“内容长度”=20;
“内容类型”=“文本/xml”;
日期=“2015年8月20日星期四02:23:11 GMT”;
Expires=“1981年11月19日星期四08:52:00 GMT”;
“保持活动”=“超时=15,最大=100”;
Pragma=“无缓存”;
Server=“Apache/2.2.14(Ubuntu)”;
“设置Cookie”=“pamail=5b7dbglbh194e2um10u0ps0944;路径=/”;
Vary=“接受编码”;
“X-Powered-By”=“PHP/5.3.2-1ubuntu4.19”;
} }
/用户/rhoverf/Library/Developer/CoreSimulator/Devices/B234847F-7F5A-40FC-A510-B2667158A5DE/data/Containers/data/Application/D1A6F8BD-508B-42A5-A338-C1BCC82042B3/Documents/default.realm
/用户/rhoverf/Library/Developer/CoreSimulator/Devices/B234847F-7F5A-40FC-A510-B2667158A5DE/data/Containers/data/Application/D1A6F8BD-508B-42A5-A338-C1BCC82042B3/Documents/default.realm
致命错误:在展开可选值时意外发现nil

因为只有在调用
println(strData!)
时,您才会出现强制展开可选文件的情况,所以我猜
strData
实际上是
nil

请检查您的服务是否返回数据。也许你可以检查一下数据!=在处理结果之前为零。这可能有助于缩小问题的范围。
<NSHTTPURLResponse: 0x7fc541cb2f10> { URL: http://www.cloudstaff.com/sendmail/csa_restore.php } { status code: 200, headers {
   "Cache-Control" = "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
   Connection = "Keep-Alive";
   "Content-Encoding" = gzip;
   "Content-Length" = 20;
   "Content-Type" = "text/xml";
   Date = "Thu, 20 Aug 2015 02:23:11 GMT";
   Expires = "Thu, 19 Nov 1981 08:52:00 GMT";
   "Keep-Alive" = "timeout=15, max=100";
   Pragma = "no-cache";
   Server = "Apache/2.2.14 (Ubuntu)";
   "Set-Cookie" = "pamail=5b7dbglbh194e2um10u0ps0944; path=/";
   Vary = "Accept-Encoding";
   "X-Powered-By" = "PHP/5.3.2-1ubuntu4.19";
} }

/Users/rhoverf/Library/Developer/CoreSimulator/Devices/B234847F-7F5A-40FC-A510-B2667158A5DE/data/Containers/Data/Application/D1A6F8BD-508B-42A5-A338-C1BCC82042B3/Documents/default.realm
/Users/rhoverf/Library/Developer/CoreSimulator/Devices/B234847F-7F5A-40FC-A510-B2667158A5DE/data/Containers/Data/Application/D1A6F8BD-508B-42A5-A338-C1BCC82042B3/Documents/default.realm
fatal error: unexpectedly found nil while unwrapping an Optional value