2017-08-21 28 views
0

我试图存储我的scenekit场景(理想情况下是Firebase,但我认为这不可能?)。使用以下几点似乎在文档中 - 我只是得到1.0返回作为进展(完整)和零为错误Scenekit写入退出无错

@IBOutlet weak var sceneView: ARSCNView! 
let scene = SCNScene() 
sceneView.scene = scene 

sceneView.scene.write(to: URL(string: "http://foo.com")!, options: nil, delegate: nil) { (totalProgress, error, stop) in 
     print("Progress \(totalProgress) Error: \(String(describing: error))") 
    } 

该网址显然是一个虚拟的一个,我期望它至少错误?当我使用适当的Firebase存储网址时,不会存储任何内容,并且我会得到相同的反馈。有没有人有一个快速的3(pref)例子?

感谢

+0

首先,上面有什么是'sceneView'和'scene'(我猜可以,但最好不要假设),什么是提供'write'功能? – cschandler

+0

对不起,我正在使用ARKit,一切工作正常,这只是我试图添加的一项新功能,我会更新我的问题以显示场景和sceneView的代码。写来自这里: https://developer.apple.com/documentation/scenekit/scnscene/1523577-write –

+0

您是否试图保存到Firebase存储?我打赌,问题出在Firebase领域。 – cschandler

回答

0

它看起来像SceneKit未能正确表面上的错误,但返回的值应该是正确的:

let success = sceneView.scene.write(to: URL(string: "http://foo.com")!, options: nil, delegate: nil) { (totalProgress, error, stop) in 
     print("Progress \(totalProgress) Error: \(String(describing: error))") 
    } 
    print("Success: \(success)") 

Progress 1.0 Error: nil

Success: false

要得到什么的失败,你可以先创建感SceneKit文件然后尝试保存它:

let data = NSKeyedArchiver.archivedData(withRootObject: sceneView.scene) 
    do { 
     try data.write(to: URL(string: "http://foo.com")!) 
    } catch let error { 
     print("Error: \(String(describing: error))") 
    } 

Error: Error Domain=NSCocoaErrorDomain Code=518 "The file couldn’t be saved because URL type http isn’t supported." UserInfo={NSURL= http://foo.com }

+0

太好了,我会试试看。在这里结束的一天可能会在今晚晚些时候或第一天早上。感谢指针,我会告诉你。欢呼 –

+0

这让我越过了障碍。我尚未将创建的文件重新提交,但如果使用创建场景文件然后写入位置的第二个选项,则可以看到它存储。第一个片段我仍然有误报,因此现在放弃了这种方法。非常感谢,将这标记为答案。 –

+0

第一个版本也应该工作。确保你提供了一个本地文件路径,文件名和扩展名。 – mnuages