2010-03-08 14 views
0

J'essaie de créer un document de type "projet", car il contient des sous-documents dans un répertoire spécifié. Je voudrais une toute nouvelle sauvegarde d'un document pour configurer ce répertoire avec des sous-répertoires appropriés. Je voudrais un "Enregistrer sous" pour copier tous ces sous-répertoires et tous les fichiers en leur sein au nouvel emplacement. Mais je voudrais un "Enregistrer" pour mettre à jour seulement certains fichiers de données et (bien sûr) ne pas écraser tous les sous-documents!Enregistrement d'un document de type "projet" (contenant des sous-documents)

Quelle est la manière «sûre» de faire cela? J'ai essayé de garder une trace de l'emplacement du fichier dans mon document, et de vérifier s'il était identique ou différent de l'emplacement de sauvegarde, mais ça me semble désordonné, et je crains qu'Apple ne fasse quelque chose derrière la scène La comparaison directe URL vers URL échoue dans certaines circonstances.

Existe-t-il une façon standard de faire quelque chose comme ça?

+0

Utilisez-vous des documents de type paquet? – zneak

+0

Oui, le "projet" est un paquet contenant un fichier régulier avec certaines données ainsi qu'un répertoire plein de sous-documents. – andyvn22

Répondre

1

NSFileWrapper prend en charge l'écriture incrémentielle dans Snow Leopard, qui utilisera des liens durs au lieu de les copier. Cela semble exactement ce que vous cherchez. Voir this pour plus d'informations.

+0

Malheureusement, l'utilisation de liens durs pour émuler la copie sur écriture est une idée dangereuse et brisée. Tôt ou tard, quelqu'un modifiera l'un des fichiers "copiés" dans le paquet avec un outil qui réécrit le fichier original plutôt que d'en écrire un nouveau, et casse les autres "copies". NSFileWrapper sans le hack de lien dur est l'approche «appropriée» fournie par le cadre. –

+1

Euh? Le framework * fait * le lien dur pour vous. Ce n'est pas un hack, c'est une amélioration substantielle de la vitesse pour les sauvegardes incrémentales. Et cela se produit uniquement avec un "Enregistrer" et non un "Enregistrer sous", comme le suggère l'affiche. –