-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathlisting7.html
executable file
·186 lines (160 loc) · 7.84 KB
/
listing7.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<!-- BEGIN META TAG INFO -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="home" href="http://developer.apple.com/">
<link rel="find" href="http://developer.apple.com/search/">
<link rel="stylesheet" type="text/css" href="../../documentation/css/adcstyle.css" title="fonts">
<script language="JavaScript" src="../../documentation/js/adc.js" type="text/javascript"></script>
<!-- END META TAG INFO -->
<!-- BEGIN TITLE -->
<title>File Wrappers with Core Data Documents - /ReadMe.txt</title>
<!-- END TITLE -->
<script language="JavaScript">
function JumpToNewPage() {
window.location=document.scpopupmenu.gotop.value;
return true;
}
</script>
</head>
<!-- BEGIN BODY OPEN -->
<body>
<!--END BODY OPEN -->
<!-- START CENTER OPEN -->
<center>
<!-- END CENTER OPEN -->
<!-- BEGIN LOGO AND SEARCH -->
<!--#include virtual="/includes/adcnavbar"-->
<!-- END LOGO AND SEARCH -->
<!-- START BREADCRUMB -->
<div id="breadcrumb">
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td scope="row"><img width="340" height="10" src="images/1dot.gif" alt=""></td>
<td><img width="340" height="10" src="images/1dot.gif" alt=""></td>
</tr>
<tr valign="middle">
<td align="left" colspan="2">
<a href="http://developer.apple.com/">ADC Home</a> > <a href="../../referencelibrary/index.html#//apple_ref/doc/uid/TP30000943" target="_top">Reference Library</a> > <a href="../index.html#//apple_ref/doc/uid/TP30000925" target="_top">Sample Code</a> > <a href="../Cocoa/index.html#//apple_ref/doc/uid/TP30000925-TP30000416" target="_top">Cocoa</a> > <a href="../Cocoa/idxDataManagement-date.html#//apple_ref/doc/uid/TP30000925-TP30000416-TP30000445">Data Management</a> > <A HREF="javascript:location.replace('index.html');">File Wrappers with Core Data Documents</A> >
</td>
</tr>
<tr>
<td colspan="2" scope="row"><img width="680" height="35" src="images/1dot.gif" alt=""></td>
</tr>
</table>
</div>
<!-- END BREADCRUMB -->
<!-- START MAIN CONTENT -->
<!-- START TITLE GRAPHIC AND INTRO-->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td><h1><div id="pagehead">File Wrappers with Core Data Documents</div></h1></td>
</tr>
</table>
<!-- END TITLE GRAPHIC AND INTRO -->
<!-- START WIDE COLUMN -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td id="scdetails">
<h2>/ReadMe.txt</h2>
<form name="scpopupmenu" onSubmit="return false;" method=post>
<p><strong>View Source Code:</strong>
<select name="gotop" onChange="JumpToNewPage();" style="width:340px"><option selected value="ingnore">Select File</option>
<option value="listing1.html">/FileWrapperSupport.h</option>
<option value="listing2.html">/FileWrapperSupport.m</option>
<option value="listing3.html">/main.m</option>
<option value="listing4.html">/MyDocument.h</option>
<option value="listing5.html">/MyDocument.m</option>
<option value="listing6.html">/NSPersistentDocumentFileWrappers_Prefix.pch</option>
<option value="listing7.html">/ReadMe.txt</option></select>
</p>
</form>
<p><strong><a href="PersistentDocumentFileWrappers.zip">Download Sample</a></strong> (“PersistentDocumentFileWrappers.zip”, 78.4K)<BR>
<strong><a href="PersistentDocumentFileWrappers.dmg">Download Sample</a></strong> (“PersistentDocumentFileWrappers.dmg”, 85.4K)</p>
<!--
<p><strong><a href="#">Download Sample</a></strong> (“filename.sit”, 500K)</p>
-->
</td>
</tr>
<tr>
<td scope="row"><img width="680" height="10" src="images/1dot.gif" alt=""><br>
<img height="1" width="680" src="images/1dot_919699.gif" alt=""><br>
<img width="680" height="20" src="images/1dot.gif" alt=""></td>
</tr>
<tr>
<td scope="row">
<!--googleon: index -->
<pre class="sourcecodebox">
NSPersistentDocumentFileWrappers
This sample demonstrates how you can use directory wrappers with
NSPersistentDocument.
A directory wrapper allows you to adopt a package format for your documents.
Document packages give the illusion of a single document to users but provide
you with more flexibility in how you store the document data internally(*).
The default implementation of NSPersistentDocument does not support document
packages, but it may be useful for some Core Data-based documents to be able to
use a package format. For example, it may be preferable to store image data as
separate files rather than embedding that data in the persistent store.
This sample offers a work-around that you can use in your own projects -- but
there is one issue that you need to consider: atomicity during writes. The
principle concern here is that a save operation may be partially, rather than
wholly, successful.
If a save operation does not complete successfully, you must decide for
yourself what is the appropriate action to take, with consideration for how it
will affect the application, and how best to recover. For example, what should
happen if the file wrapper saves successfully, but the managed object context
fails to save? Depending on the application, it may be necessary to roll-back
or take other steps.
You may be able to assure atomicity in exchange for performance, by saving the
document to a temporary location, and then -- if successful -- replacing the old
file with the new. In the case of very large documents, this could be a slow
operation. Moreover, you must ensure that the "temporary" location resides on
the same file system as the original file -- otherwise the replacement cannot be
atomic. (The simplest approach would be to locate the temporary file in the same
directory as the original, using a different file extension.)
(*) For more about directory wrappers and document packages, see:
"Working With Directory Wrappers" in Reference Library > Guides > Cocoa > File
Management > Application File Management
<http://developer.apple.com/documentation/Cocoa/Conceptual/AppFileMgmt/AppFileMgmt.html>
and
"Document Packages" in Reference Library > Guides > Core Foundation > Resource
Management > Bundle Programming Guide >
<http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/CFBundles.html>
</pre>
<!--googleoff: index -->
</td>
</tr>
</table>
<!-- END WIDE COLUMN -->
<!-- END MAIN CONTENT -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><div style="width: 100%; height: 1px; background-color: #919699; margin-top: 5px; margin-bottom: 15px"></div></td>
</tr>
<tr>
<td align="center"><br/>
<table border="0" cellpadding="0" cellspacing="0" class="graybox">
<tr>
<th>Did this document help you?</th>
</tr>
<tr>
<td>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=1&url=/samplecode/PersistentDocumentFileWrappers/listing7.html%3Fid%3DDTS40008763-1.0&media=dvd" target=_new>Yes</a>: Tell us what works for you.</div>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=2&url=/samplecode/PersistentDocumentFileWrappers/listing7.html%3Fid%3DDTS40008763-1.0&media=dvd" target=_new>It’s good, but:</a> Report typos, inaccuracies, and so forth.</div>
<div><a href="http://developer.apple.com/feedback/?v=3&url=/samplecode/PersistentDocumentFileWrappers/listing7.html%3Fid%3DDTS40008763-1.0&media=dvd" target=_new>It wasn’t helpful</a>: Tell us what would have helped.</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- START BOTTOM APPLE NAVIGATION -->
<!--#include virtual="/includes/footer"-->
<!-- END BOTTOM APPLE NAVIGATION -->
<!-- START CENTER CLOSE -->
</center>
<!-- END CENTER CLOSE -->
</body>
</html>