2017-08-21 5 views
0

J'essaie de stocker ma scène de scène (idéalement pour Firebase mais je ne pense pas que ce soit possible?). En utilisant ce qui suit de ce qui semble être peu dans la documentation - je reçois simplement 1.0 retourné comme progression (complet) et nul pour l'erreur.Exit d'écriture Scenekit sans erreur

@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))") 
    } 

L'URL est évidemment un mannequin et je me attends à l'erreur sur au moins? Quand j'utilise une bonne URL de stockage Firebase, rien n'est stocké et je reçois le même retour. Est-ce que quelqu'un a un exemple rapide de 3 (pref)?

Merci

+0

Tout d'abord, qu'est-ce que 'sceneView' et' scene' ci-dessus (je peux deviner, mais mieux ne pas supposer), et qu'est-ce qui fournit la fonctionnalité 'write'? – cschandler

+0

Désolé, j'utilise ARKit et tout fonctionne correctement pour ça, c'est juste une nouvelle fonctionnalité que j'essaye d'ajouter, je vais mettre à jour ma question pour montrer le code pour scene et sceneView. L'écriture vient d'ici: https://developer.apple.com/documentation/scenekit/scnscene/1523577-write –

+0

Etes-vous en train d'enregistrer dans Firebase Storage? Je vais parier que le problème réside dans le domaine Firebase. – cschandler

Répondre

0

Il ressemble à SceneKit ne surface correctement l'erreur, mais la valeur de retour doit être correcte:

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

Pour avoir une idée de ce qui vous ne pouvez d'abord créer la SceneKit document et ensuite essayer de l'enregistrer:

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

Super, je vais essayer ça. Fin de la journée ici, donc peut être plus tard ce soir ou la première chose le matin. Merci pour le pointeur, je vous le ferai savoir. Cheers –

+0

Cela m'a eu sur l'obstacle. Je n'ai pas encore récupéré le fichier créé, mais je peux le voir stocké si j'utilise la deuxième option de création du fichier de scène, puis d'écriture sur l'emplacement. J'ai toujours eu des faux positifs avec le premier extrait donc j'ai abandonné cette approche pour le moment. Merci beaucoup, marquera cela comme la réponse. –

+0

La première version devrait également fonctionner. Assurez-vous de fournir un chemin de fichier local, avec un nom de fichier et une extension. – mnuages