Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Import the staged projects.

  • Loading branch information...
commit 0e38978d67718207d0db40bce177a1bc862b6a95 1 parent 85a82b2
@clarkware authored
Showing with 28,450 additions and 3 deletions.
  1. +3 −3 LICENSE
  2. +9 −0 code/2-json/.gitignore
  3. +20 −0 code/2-json/Classes/Goal.h
  4. +58 −0 code/2-json/Classes/Goal.m
  5. +9 −0 code/2-json/Classes/GoalsViewController.h
  6. +88 −0 code/2-json/Classes/GoalsViewController.m
  7. +12 −0 code/2-json/Classes/SaveUpAppDelegate.h
  8. +33 −0 code/2-json/Classes/SaveUpAppDelegate.m
  9. +382 −0 code/2-json/GoalsViewController.xib
  10. +535 −0 code/2-json/MainWindow.xib
  11. +14 −0 code/2-json/README.md
  12. +30 −0 code/2-json/SaveUp-Info.plist
  13. +326 −0 code/2-json/SaveUp.xcodeproj/project.pbxproj
  14. +14 −0 code/2-json/SaveUp_Prefix.pch
  15. BIN  code/2-json/icon.png
  16. +50 −0 code/2-json/json-framework/JSON.h
  17. +68 −0 code/2-json/json-framework/NSObject+SBJSON.h
  18. +53 −0 code/2-json/json-framework/NSObject+SBJSON.m
  19. +58 −0 code/2-json/json-framework/NSString+SBJSON.h
  20. +55 −0 code/2-json/json-framework/NSString+SBJSON.m
  21. +75 −0 code/2-json/json-framework/SBJSON.h
  22. +212 −0 code/2-json/json-framework/SBJSON.m
  23. +86 −0 code/2-json/json-framework/SBJsonBase.h
  24. +78 −0 code/2-json/json-framework/SBJsonBase.m
  25. +87 −0 code/2-json/json-framework/SBJsonParser.h
  26. +475 −0 code/2-json/json-framework/SBJsonParser.m
  27. +129 −0 code/2-json/json-framework/SBJsonWriter.h
  28. +237 −0 code/2-json/json-framework/SBJsonWriter.m
  29. +8 −0 code/2-json/main.m
  30. +9 −0 code/3-scaffold/.gitignore
  31. +8 −0 code/3-scaffold/Classes/AppHelpers.h
  32. +48 −0 code/3-scaffold/Classes/AppHelpers.m
  33. +19 −0 code/3-scaffold/Classes/Goal.h
  34. +71 −0 code/3-scaffold/Classes/Goal.m
  35. +26 −0 code/3-scaffold/Classes/GoalAddViewController.h
  36. +176 −0 code/3-scaffold/Classes/GoalAddViewController.m
  37. +19 −0 code/3-scaffold/Classes/GoalDetailViewController.h
  38. +138 −0 code/3-scaffold/Classes/GoalDetailViewController.m
  39. +11 −0 code/3-scaffold/Classes/GoalsViewController.h
  40. +135 −0 code/3-scaffold/Classes/GoalsViewController.m
  41. +11 −0 code/3-scaffold/Classes/Resource.h
  42. +71 −0 code/3-scaffold/Classes/Resource.m
  43. +12 −0 code/3-scaffold/Classes/SaveUpAppDelegate.h
  44. +33 −0 code/3-scaffold/Classes/SaveUpAppDelegate.m
  45. +382 −0 code/3-scaffold/GoalsViewController.xib
  46. +556 −0 code/3-scaffold/MainWindow.xib
  47. +5 −0 code/3-scaffold/README.md
  48. +30 −0 code/3-scaffold/SaveUp-Info.plist
  49. +350 −0 code/3-scaffold/SaveUp.xcodeproj/project.pbxproj
  50. +15 −0 code/3-scaffold/SaveUp_Prefix.pch
  51. BIN  code/3-scaffold/icon.png
  52. +50 −0 code/3-scaffold/json-framework/JSON.h
  53. +68 −0 code/3-scaffold/json-framework/NSObject+SBJSON.h
  54. +53 −0 code/3-scaffold/json-framework/NSObject+SBJSON.m
  55. +58 −0 code/3-scaffold/json-framework/NSString+SBJSON.h
  56. +55 −0 code/3-scaffold/json-framework/NSString+SBJSON.m
  57. +75 −0 code/3-scaffold/json-framework/SBJSON.h
  58. +212 −0 code/3-scaffold/json-framework/SBJSON.m
  59. +86 −0 code/3-scaffold/json-framework/SBJsonBase.h
  60. +78 −0 code/3-scaffold/json-framework/SBJsonBase.m
  61. +87 −0 code/3-scaffold/json-framework/SBJsonParser.h
  62. +475 −0 code/3-scaffold/json-framework/SBJsonParser.m
  63. +129 −0 code/3-scaffold/json-framework/SBJsonWriter.h
  64. +237 −0 code/3-scaffold/json-framework/SBJsonWriter.m
  65. +8 −0 code/3-scaffold/main.m
  66. +9 −0 code/4-crud/.gitignore
  67. +8 −0 code/4-crud/Classes/AppHelpers.h
  68. +48 −0 code/4-crud/Classes/AppHelpers.m
  69. +23 −0 code/4-crud/Classes/Goal.h
  70. +99 −0 code/4-crud/Classes/Goal.m
  71. +26 −0 code/4-crud/Classes/GoalAddViewController.h
  72. +176 −0 code/4-crud/Classes/GoalAddViewController.m
  73. +19 −0 code/4-crud/Classes/GoalDetailViewController.h
  74. +138 −0 code/4-crud/Classes/GoalDetailViewController.m
  75. +11 −0 code/4-crud/Classes/GoalsViewController.h
  76. +135 −0 code/4-crud/Classes/GoalsViewController.m
  77. +11 −0 code/4-crud/Classes/Resource.h
  78. +71 −0 code/4-crud/Classes/Resource.m
  79. +12 −0 code/4-crud/Classes/SaveUpAppDelegate.h
  80. +33 −0 code/4-crud/Classes/SaveUpAppDelegate.m
  81. +382 −0 code/4-crud/GoalsViewController.xib
  82. +556 −0 code/4-crud/MainWindow.xib
  83. +5 −0 code/4-crud/README.md
  84. +30 −0 code/4-crud/SaveUp-Info.plist
  85. +350 −0 code/4-crud/SaveUp.xcodeproj/project.pbxproj
  86. +15 −0 code/4-crud/SaveUp_Prefix.pch
  87. BIN  code/4-crud/icon.png
  88. +50 −0 code/4-crud/json-framework/JSON.h
  89. +68 −0 code/4-crud/json-framework/NSObject+SBJSON.h
  90. +53 −0 code/4-crud/json-framework/NSObject+SBJSON.m
  91. +58 −0 code/4-crud/json-framework/NSString+SBJSON.h
  92. +55 −0 code/4-crud/json-framework/NSString+SBJSON.m
  93. +75 −0 code/4-crud/json-framework/SBJSON.h
  94. +212 −0 code/4-crud/json-framework/SBJSON.m
  95. +86 −0 code/4-crud/json-framework/SBJsonBase.h
  96. +78 −0 code/4-crud/json-framework/SBJsonBase.m
  97. +87 −0 code/4-crud/json-framework/SBJsonParser.h
  98. +475 −0 code/4-crud/json-framework/SBJsonParser.m
  99. +129 −0 code/4-crud/json-framework/SBJsonWriter.h
  100. +237 −0 code/4-crud/json-framework/SBJsonWriter.m
  101. +8 −0 code/4-crud/main.m
  102. +9 −0 code/5-httpriot/.gitignore
  103. +8 −0 code/5-httpriot/Classes/AppHelpers.h
  104. +48 −0 code/5-httpriot/Classes/AppHelpers.m
  105. +21 −0 code/5-httpriot/Classes/Goal.h
  106. +56 −0 code/5-httpriot/Classes/Goal.m
  107. +26 −0 code/5-httpriot/Classes/GoalAddViewController.h
  108. +227 −0 code/5-httpriot/Classes/GoalAddViewController.m
  109. +19 −0 code/5-httpriot/Classes/GoalDetailViewController.h
  110. +138 −0 code/5-httpriot/Classes/GoalDetailViewController.m
  111. +15 −0 code/5-httpriot/Classes/GoalsViewController.h
  112. +188 −0 code/5-httpriot/Classes/GoalsViewController.m
  113. +12 −0 code/5-httpriot/Classes/SaveUpAppDelegate.h
  114. +35 −0 code/5-httpriot/Classes/SaveUpAppDelegate.m
  115. +382 −0 code/5-httpriot/GoalsViewController.xib
  116. +6 −0 code/5-httpriot/HTTPRiot/Extensions/NSDictionary+ParamUtils.h
  117. +30 −0 code/5-httpriot/HTTPRiot/Extensions/NSDictionary+ParamUtils.m
  118. +15 −0 code/5-httpriot/HTTPRiot/Extensions/NSObject+InvocationUtils.h
  119. +46 −0 code/5-httpriot/HTTPRiot/Extensions/NSObject+InvocationUtils.m
  120. +5 −0 code/5-httpriot/HTTPRiot/Extensions/NSString+EscapingUtils.h
  121. +13 −0 code/5-httpriot/HTTPRiot/Extensions/NSString+EscapingUtils.m
  122. +15 −0 code/5-httpriot/HTTPRiot/Formatters/HRFormatJSON.h
  123. +46 −0 code/5-httpriot/HTTPRiot/Formatters/HRFormatJSON.m
  124. +14 −0 code/5-httpriot/HTTPRiot/Formatters/HRFormatXML.h
  125. +40 −0 code/5-httpriot/HTTPRiot/Formatters/HRFormatXML.m
  126. +47 −0 code/5-httpriot/HTTPRiot/Formatters/HRFormatterProtocol.h
  127. +67 −0 code/5-httpriot/HTTPRiot/HRGlobal.h
  128. +20 −0 code/5-httpriot/HTTPRiot/HRGlobal.m
  129. +23 −0 code/5-httpriot/HTTPRiot/HROperationQueue.h
  130. +26 −0 code/5-httpriot/HTTPRiot/HROperationQueue.m
  131. +98 −0 code/5-httpriot/HTTPRiot/HRRequestOperation.h
  132. +356 −0 code/5-httpriot/HTTPRiot/HRRequestOperation.m
  133. +66 −0 code/5-httpriot/HTTPRiot/HRResponseDelegate.h
  134. +205 −0 code/5-httpriot/HTTPRiot/HRRestModel.h
  135. +141 −0 code/5-httpriot/HTTPRiot/HRRestModel.m
  136. +127 −0 code/5-httpriot/HTTPRiot/HTTPRiot.h
  137. +1 −0  code/5-httpriot/HTTPRiot/HTTPRiot_Prefix.pch
  138. +20 −0 code/5-httpriot/HTTPRiot/LICENSE
  139. +18 −0 code/5-httpriot/HTTPRiot/Utilities/HRBase64.h
  140. +124 −0 code/5-httpriot/HTTPRiot/Utilities/HRBase64.m
  141. +14 −0 code/5-httpriot/HTTPRiot/Vendor/AIXMLSerialization/AIXMLDocumentSerialize.h
  142. +21 −0 code/5-httpriot/HTTPRiot/Vendor/AIXMLSerialization/AIXMLDocumentSerialize.m
  143. +191 −0 code/5-httpriot/HTTPRiot/Vendor/AIXMLSerialization/AIXMLElementSerialize.h
  144. +147 −0 code/5-httpriot/HTTPRiot/Vendor/AIXMLSerialization/AIXMLElementSerialize.m
  145. +62 −0 code/5-httpriot/HTTPRiot/Vendor/AIXMLSerialization/AIXMLSerialization.h
  146. +19 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/CREDITS
  147. +50 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/JSON.h
  148. +68 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/NSObject+SBJSON.h
  149. +53 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/NSObject+SBJSON.m
  150. +58 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/NSString+SBJSON.h
  151. +55 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/NSString+SBJSON.m
  152. +75 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJSON.h
  153. +212 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJSON.m
  154. +86 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJsonBase.h
  155. +78 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJsonBase.m
  156. +87 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJsonParser.h
  157. +475 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJsonParser.m
  158. +129 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJsonWriter.h
  159. +228 −0 code/5-httpriot/HTTPRiot/Vendor/JSON/SBJsonWriter.m
  160. +3 −0  code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXML.h
  161. +67 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLDocument.h
  162. +111 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLDocument.m
  163. +49 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLElement.h
  164. +610 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLElement.m
  165. +21 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLElementAdditions.h
  166. +115 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLElementAdditions.m
  167. +170 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLNode.h
  168. +1,808 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLNode.m
  169. +79 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/DDXMLPrivate.h
  170. +14 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/NSStringAdditions.h
  171. +29 −0 code/5-httpriot/HTTPRiot/Vendor/KissXML/NSStringAdditions.m
  172. +556 −0 code/5-httpriot/MainWindow.xib
  173. +4 −0 code/5-httpriot/README.md
  174. +30 −0 code/5-httpriot/SaveUp-Info.plist
  175. +550 −0 code/5-httpriot/SaveUp.xcodeproj/project.pbxproj
  176. +15 −0 code/5-httpriot/SaveUp_Prefix.pch
  177. BIN  code/5-httpriot/icon.png
  178. +8 −0 code/5-httpriot/main.m
  179. +9 −0 code/6-objectiveresource/.gitignore
  180. +8 −0 code/6-objectiveresource/Classes/AppHelpers.h
  181. +48 −0 code/6-objectiveresource/Classes/AppHelpers.m
  182. +17 −0 code/6-objectiveresource/Classes/Goal.h
  183. +20 −0 code/6-objectiveresource/Classes/Goal.m
  184. +26 −0 code/6-objectiveresource/Classes/GoalAddViewController.h
  185. +181 −0 code/6-objectiveresource/Classes/GoalAddViewController.m
  186. +19 −0 code/6-objectiveresource/Classes/GoalDetailViewController.h
  187. +138 −0 code/6-objectiveresource/Classes/GoalDetailViewController.m
  188. +11 −0 code/6-objectiveresource/Classes/GoalsViewController.h
  189. +135 −0 code/6-objectiveresource/Classes/GoalsViewController.m
  190. +12 −0 code/6-objectiveresource/Classes/SaveUpAppDelegate.h
  191. +36 −0 code/6-objectiveresource/Classes/SaveUpAppDelegate.m
  192. +382 −0 code/6-objectiveresource/GoalsViewController.xib
  193. +556 −0 code/6-objectiveresource/MainWindow.xib
  194. +4 −0 code/6-objectiveresource/README.md
  195. +30 −0 code/6-objectiveresource/SaveUp-Info.plist
  196. +612 −0 code/6-objectiveresource/SaveUp.xcodeproj/project.pbxproj
  197. +15 −0 code/6-objectiveresource/SaveUp_Prefix.pch
  198. BIN  code/6-objectiveresource/icon.png
  199. +8 −0 code/6-objectiveresource/main.m
  200. +13 −0 code/6-objectiveresource/objectiveresource/Classes/NSError+Error.h
  201. +17 −0 code/6-objectiveresource/objectiveresource/Classes/NSError+Error.m
  202. +23 −0 code/6-objectiveresource/objectiveresource/Classes/lib/Connection.h
  203. +145 −0 code/6-objectiveresource/objectiveresource/Classes/lib/Connection.m
  204. +30 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ConnectionDelegate.h
  205. +89 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ConnectionDelegate.m
  206. +19 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ConnectionManager.h
  207. +87 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ConnectionManager.m
  208. +15 −0 code/6-objectiveresource/objectiveresource/Classes/lib/NSHTTPURLResponse+Error.h
  209. +52 −0 code/6-objectiveresource/objectiveresource/Classes/lib/NSHTTPURLResponse+Error.m
  210. +13 −0 code/6-objectiveresource/objectiveresource/Classes/lib/NSMutableURLRequest+ResponseType.h
  211. +32 −0 code/6-objectiveresource/objectiveresource/Classes/lib/NSMutableURLRequest+ResponseType.m
  212. +84 −0 code/6-objectiveresource/objectiveresource/Classes/lib/NSObject+ObjectiveResource.h
  213. +362 −0 code/6-objectiveresource/objectiveresource/Classes/lib/NSObject+ObjectiveResource.m
  214. +11 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ObjectiveResource.h
  215. +30 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ObjectiveResourceConfig.h
  216. +56 −0 code/6-objectiveresource/objectiveresource/Classes/lib/ObjectiveResourceConfig.m
  217. +34 −0 code/6-objectiveresource/objectiveresource/Classes/lib/Response.h
  218. +73 −0 code/6-objectiveresource/objectiveresource/Classes/lib/Response.m
  219. +11 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/CoreSupport.h
  220. +42 −0 ...e/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/Inflections/NSString+InflectionSupport.h
  221. +94 −0 ...e/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/Inflections/NSString+InflectionSupport.m
  222. +12 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/NSData+Additions.h
  223. +161 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/NSData+Additions.m
  224. +35 −0 ...jectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/NSObject+PropertySupport.h
  225. +82 −0 ...jectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/NSObject+PropertySupport.m
  226. +19 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/NSString+GSub.h
  227. +25 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/NSString+GSub.m
  228. +27 −0 ...eresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/ObjectiveResourceDateFormatter.h
  229. +72 −0 ...eresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/ObjectiveResourceDateFormatter.m
  230. +11 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Core/ObjectiveSupport.h
  231. +78 −0 ...eresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/JSONSerializable.h
  232. +2 −0  ...ce/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/JSONSerializableSupport.h
  233. +17 −0 ...tiveresource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/NSArray+JSONSerializableSupport.h
  234. +35 −0 ...tiveresource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/NSArray+JSONSerializableSupport.m
  235. +14 −0 ...esource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/NSDictionary+JSONSerializableSupport.h
  236. +30 −0 ...esource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/NSDictionary+JSONSerializableSupport.m
  237. +25 −0 ...iveresource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/NSObject+JSONSerializableSupport.h
  238. +149 −0 ...iveresource/Classes/lib/objective_support/Classes/lib/Serialization/JSON/NSObject+JSONSerializableSupport.m
  239. +13 −0 ...ectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSDate+Serialize.h
  240. +23 −0 ...ectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSDate+Serialize.m
  241. +16 −0 ...rce/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSDictionary+KeyTranslation.h
  242. +19 −0 ...rce/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSDictionary+KeyTranslation.m
  243. +14 −0 ...tiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSObject+Serialize.h
  244. +22 −0 ...tiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSObject+Serialize.m
  245. +16 −0 ...tiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSString+Serialize.h
  246. +19 −0 ...tiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/NSString+Serialize.m
  247. +11 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/Serialize.h
  248. +32 −0 ...urce/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/FromXMLElementDelegate.h
  249. +188 −0 ...urce/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/FromXMLElementDelegate.m
  250. +13 −0 ...ectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSArray+XMLSerializableSupport.h
  251. +35 −0 ...ectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSArray+XMLSerializableSupport.m
  252. +13 −0 ...jectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSDate+XMLSerializableSupport.h
  253. +35 −0 ...jectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSDate+XMLSerializableSupport.m
  254. +17 −0 ...eresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSDictionary+XMLSerializableSupport.h
  255. +37 −0 ...eresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSDictionary+XMLSerializableSupport.m
  256. +11 −0 ...jectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSNull+XMLSerializableSupport.h
  257. +17 −0 ...jectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSNull+XMLSerializableSupport.m
  258. +12 −0 ...ctiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSNumber+XMLSerializableSupport.h
  259. +25 −0 ...ctiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSNumber+XMLSerializableSupport.m
  260. +54 −0 ...ctiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSObject+XMLSerializableSupport.h
  261. +132 −0 ...ctiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSObject+XMLSerializableSupport.m
  262. +20 −0 ...ctiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSString+XMLSerializableSupport.h
  263. +33 −0 ...ctiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/NSString+XMLSerializableSupport.m
  264. +79 −0 ...iveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/XMLSerializable.h
  265. +14 −0 ...urce/objectiveresource/Classes/lib/objective_support/Classes/lib/Serialization/XML/XMLSerializableSupport.h
  266. +11 −0 ...bjectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/JSONFramework.h
  267. +60 −0 ...ectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/NSObject+SBJSON.h
  268. +57 −0 ...ectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/NSObject+SBJSON.m
  269. +41 −0 ...ectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/NSString+SBJSON.h
  270. +60 −0 ...ectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/NSString+SBJSON.m
  271. +137 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/SBJSON.h
  272. +740 −0 code/6-objectiveresource/objectiveresource/Classes/lib/objective_support/Classes/lib/json-framework/SBJSON.m
  273. +20 −0 code/6-objectiveresource/objectiveresource/LICENSE
  274. +39 −0 code/6-objectiveresource/objectiveresource/README.textile
  275. +9 −0 code/iphone_app/.gitignore
  276. 0  code/iphone_app/Classes/.gitignore
  277. +22 −0 code/iphone_app/Classes/AppHelpers.h
  278. +133 −0 code/iphone_app/Classes/AppHelpers.m
  279. +17 −0 code/iphone_app/Classes/AuthenticationViewController.h
  280. +163 −0 code/iphone_app/Classes/AuthenticationViewController.m
  281. +21 −0 code/iphone_app/Classes/Credit.h
  282. +59 −0 code/iphone_app/Classes/Credit.m
  283. +18 −0 code/iphone_app/Classes/CreditDetailViewController.h
  284. +175 −0 code/iphone_app/Classes/CreditDetailViewController.m
  285. +20 −0 code/iphone_app/Classes/Goal.h
  286. +35 −0 code/iphone_app/Classes/Goal.m
  287. +18 −0 code/iphone_app/Classes/GoalAddViewController.h
  288. +162 −0 code/iphone_app/Classes/GoalAddViewController.m
  289. +17 −0 code/iphone_app/Classes/GoalDetailViewController.h
  290. +362 −0 code/iphone_app/Classes/GoalDetailViewController.m
  291. +12 −0 code/iphone_app/Classes/GoalsViewController.h
  292. +178 −0 code/iphone_app/Classes/GoalsViewController.m
  293. +14 −0 code/iphone_app/Classes/SaveUpAppDelegate.h
  294. +97 −0 code/iphone_app/Classes/SaveUpAppDelegate.m
  295. +11 −0 code/iphone_app/Classes/Session.h
  296. +14 −0 code/iphone_app/Classes/Session.m
  297. +24 −0 code/iphone_app/Classes/User.h
  298. +99 −0 code/iphone_app/Classes/User.m
  299. +334 −0 code/iphone_app/GoalsView.xib
  300. +30 −0 code/iphone_app/Info.plist
Sorry, we could not display the entire diff because too many files (584) changed.
View
6 LICENSE
@@ -1,6 +1,6 @@
-This source tree contains a mixture of original material and packages of
-other people's work. These packages carry their own licenses, and the
-conditions in this file do not apply to these packages.
+This project contains a mixture of original material and source code
+packages of other people's work. These packages carry their own licenses,
+and the conditions in this file do not apply to these packages.
Copyright (c) 2010 Mike Clark, The Pragmatic Studio
View
9 code/2-json/.gitignore
@@ -0,0 +1,9 @@
+build
+*.pbxuser
+*.mode1v3
+*.perspective
+*.perspectivev3
+*~.nib
+*~.xib
+!default.pbxuser
+!default.mode1v3
View
20 code/2-json/Classes/Goal.h
@@ -0,0 +1,20 @@
+@interface Goal : NSObject {
+ NSString *name;
+ NSString *amount;
+ NSString *goalId;
+ NSDate *createdAt;
+ NSDate *updatedAt;
+}
+
+@property (nonatomic, copy) NSString *name;
+@property (nonatomic, copy) NSString *amount;
+@property (nonatomic, copy) NSString *goalId;
+@property (nonatomic, retain) NSDate *createdAt;
+@property (nonatomic, retain) NSDate *updatedAt;
+
+- (id)initWithDictionary:(NSDictionary *)dictionary;
+
++ (NSArray *)findAllRemote;
+
+@end
+
View
58 code/2-json/Classes/Goal.m
@@ -0,0 +1,58 @@
+#import "Goal.h"
+#import "SBJSON.h"
+
+@implementation Goal
+
+@synthesize name;
+@synthesize amount;
+@synthesize goalId;
+@synthesize createdAt;
+@synthesize updatedAt;
+
+- (void)dealloc {
+ [name release];
+ [amount release];
+ [goalId release];
+ [createdAt release];
+ [updatedAt release];
+ [super dealloc];
+}
+
+- (id)initWithDictionary:(NSDictionary *)dictionary {
+ if (self = [super init]) {
+ self.name = [dictionary valueForKey:@"name"];
+ self.amount = [NSString stringWithFormat:@"%@",
+ [dictionary valueForKey:@"amount"]];
+ self.goalId = [dictionary valueForKey:@"id"];
+ self.createdAt = [dictionary valueForKey:@"created_at"];
+ self.updatedAt = [dictionary valueForKey:@"updated_at"];
+ }
+ return self;
+}
+
++ (NSArray *)findAllRemote {
+ NSURL *url = [NSURL URLWithString:@"http://localhost:3000/goals.json"];
+
+ NSError *error = nil;
+
+ NSString *jsonString =
+ [NSString stringWithContentsOfURL:url
+ encoding:NSUTF8StringEncoding
+ error:&error];
+
+ NSMutableArray *goals = [NSMutableArray array];
+ if (jsonString) {
+ SBJSON *json = [[SBJSON alloc] init];
+ NSArray *results = [json objectWithString:jsonString error:&error];
+ [json release];
+
+ for (NSDictionary *dictionary in results) {
+ Goal *goal = [[Goal alloc] initWithDictionary:dictionary];
+ [goals addObject:goal];
+ [goal release];
+ }
+ }
+ return goals;
+}
+
+@end
View
9 code/2-json/Classes/GoalsViewController.h
@@ -0,0 +1,9 @@
+#import <UIKit/UIKit.h>
+
+@interface GoalsViewController : UITableViewController {
+ NSMutableArray *goals;
+}
+
+@property (nonatomic, retain) NSArray *goals;
+
+@end
View
88 code/2-json/Classes/GoalsViewController.m
@@ -0,0 +1,88 @@
+#import "GoalsViewController.h"
+
+#import "Goal.h"
+
+@implementation GoalsViewController
+
+@synthesize goals;
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)dealloc {
+ [goals release];
+ [super dealloc];
+}
+
+#pragma mark -
+#pragma mark View lifecycle
+
+- (IBAction)refresh {
+ [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
+ self.goals = [Goal findAllRemote];
+ [self.tableView reloadData];
+ [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
+}
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ self.title = @"Goals";
+ self.navigationItem.leftBarButtonItem = self.editButtonItem;
+
+ UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
+ target:self
+ action:@selector(refresh)];
+ self.navigationItem.rightBarButtonItem = refreshButton;
+ [refreshButton release];
+
+ [self refresh];
+}
+
+#pragma mark -
+#pragma mark Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+ return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView
+ numberOfRowsInSection:(NSInteger)section {
+ return [goals count];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView
+ cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+
+ static NSString *CellIdentifier = @"GoalCellId";
+
+ UITableViewCell *cell =
+ [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+ if (cell == nil) {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
+ reuseIdentifier:CellIdentifier] autorelease];
+ }
+
+ Goal *goal = [goals objectAtIndex:indexPath.row];
+
+ cell.textLabel.text = goal.name;
+ cell.detailTextLabel.text = goal.amount;
+
+ return cell;
+}
+
+- (void)tableView:(UITableView *)tableView
+commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
+ forRowAtIndexPath:(NSIndexPath *)indexPath {
+ [tableView beginUpdates];
+ if (editingStyle == UITableViewCellEditingStyleDelete) {
+ [goals removeObjectAtIndex:indexPath.row];
+ [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
+ withRowAnimation:UITableViewRowAnimationFade];
+ }
+ [tableView endUpdates];
+}
+
+@end
+
View
12 code/2-json/Classes/SaveUpAppDelegate.h
@@ -0,0 +1,12 @@
+#import <UIKit/UIKit.h>
+
+@interface SaveUpAppDelegate : NSObject <UIApplicationDelegate> {
+ UIWindow *window;
+ UINavigationController *navigationController;
+}
+
+@property (nonatomic, retain) IBOutlet UIWindow *window;
+@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
+
+@end
+
View
33 code/2-json/Classes/SaveUpAppDelegate.m
@@ -0,0 +1,33 @@
+#import "SaveUpAppDelegate.h"
+
+#import "GoalsViewController.h"
+
+@implementation SaveUpAppDelegate
+
+@synthesize window;
+@synthesize navigationController;
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)dealloc {
+ [navigationController release];
+ [window release];
+ [super dealloc];
+}
+
+#pragma mark -
+#pragma mark Application lifecycle
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ [window addSubview:[navigationController view]];
+ [window makeKeyAndVisible];
+ return YES;
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+ // Save data if appropriate
+}
+
+@end
+
View
382 code/2-json/GoalsViewController.xib
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">784</int>
+ <string key="IBDocument.SystemVersion">10D573</string>
+ <string key="IBDocument.InterfaceBuilderVersion">762</string>
+ <string key="IBDocument.AppKitVersion">1038.29</string>
+ <string key="IBDocument.HIToolboxVersion">460.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">87</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="371349661">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUITableView" id="709618507">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{320, 247}</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIBouncesZoom">NO</bool>
+ <int key="IBUISeparatorStyle">1</int>
+ <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
+ <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
+ <float key="IBUIRowHeight">44</float>
+ <float key="IBUISectionHeaderHeight">22</float>
+ <float key="IBUISectionFooterHeight">22</float>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">view</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="709618507"/>
+ </object>
+ <int key="connectionID">3</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">dataSource</string>
+ <reference key="source" ref="709618507"/>
+ <reference key="destination" ref="841351856"/>
+ </object>
+ <int key="connectionID">4</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="709618507"/>
+ <reference key="destination" ref="841351856"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="371349661"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="709618507"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-2.CustomClassName</string>
+ <string>2.IBEditorWindowLastContentRect</string>
+ <string>2.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>GoalsViewController</string>
+ <string>UIResponder</string>
+ <string>{{144, 609}, {320, 247}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">5</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">GoalsViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="654420027">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="654420027"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIScrollView</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableView</string>
+ <string key="superclassName">UIScrollView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="784" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3100" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">SaveUp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">87</string>
+ </data>
+</archive>
View
535 code/2-json/MainWindow.xib
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">800</int>
+ <string key="IBDocument.SystemVersion">10D573</string>
+ <string key="IBDocument.InterfaceBuilderVersion">762</string>
+ <string key="IBDocument.AppKitVersion">1038.29</string>
+ <string key="IBDocument.HIToolboxVersion">460.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string key="NS.object.0">87</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBProxyObject" id="841351856">
+ <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBProxyObject" id="302016328">
+ <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUICustomObject" id="664661524">
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="IBUIWindow" id="380026005">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">1316</int>
+ <object class="NSPSMatrix" key="NSFrameMatrix"/>
+ <string key="NSFrameSize">{320, 480}</string>
+ <object class="NSColor" key="IBUIBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MSAxIDEAA</bytes>
+ </object>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIResizesToFullScreen">YES</bool>
+ </object>
+ <object class="IBUINavigationController" id="701001926">
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ <object class="IBUINavigationBar" key="IBUINavigationBar" id="207850653">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{0, 0}</string>
+ <bool key="IBUIOpaque">NO</bool>
+ <bool key="IBUIClipsSubviews">YES</bool>
+ <bool key="IBUIMultipleTouchEnabled">YES</bool>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <object class="NSMutableArray" key="IBUIViewControllers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBUIViewController" id="619226028">
+ <object class="IBUINavigationItem" key="IBUINavigationItem" id="394667715">
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ </object>
+ <reference key="IBUIParentViewController" ref="701001926"/>
+ <string key="IBUINibName">GoalsViewController</string>
+ <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
+ <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
+ <int key="interfaceOrientation">1</int>
+ </object>
+ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <bool key="IBUIHorizontal">NO</bool>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="841351856"/>
+ <reference key="destination" ref="664661524"/>
+ </object>
+ <int key="connectionID">4</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="664661524"/>
+ <reference key="destination" ref="380026005"/>
+ </object>
+ <int key="connectionID">5</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBCocoaTouchOutletConnection" key="connection">
+ <string key="label">navigationController</string>
+ <reference key="source" ref="664661524"/>
+ <reference key="destination" ref="701001926"/>
+ </object>
+ <int key="connectionID">15</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="380026005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="841351856"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3</int>
+ <reference key="object" ref="664661524"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="302016328"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">9</int>
+ <reference key="object" ref="701001926"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="207850653"/>
+ <reference ref="619226028"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="207850653"/>
+ <reference key="parent" ref="701001926"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="619226028"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="394667715"/>
+ </object>
+ <reference key="parent" ref="701001926"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">14</int>
+ <reference key="object" ref="394667715"/>
+ <reference key="parent" ref="619226028"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.CustomClassName</string>
+ <string>-2.CustomClassName</string>
+ <string>11.IBPluginDependency</string>
+ <string>13.CustomClassName</string>
+ <string>13.IBPluginDependency</string>
+ <string>2.IBAttributePlaceholdersKey</string>
+ <string>2.IBEditorWindowLastContentRect</string>
+ <string>2.IBPluginDependency</string>
+ <string>3.CustomClassName</string>
+ <string>3.IBPluginDependency</string>
+ <string>9.IBEditorWindowLastContentRect</string>
+ <string>9.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UIApplication</string>
+ <string>UIResponder</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>GoalsViewController</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <object class="NSMutableDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <string>{{673, 376}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>SaveUpAppDelegate</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ <string>{{186, 376}, {320, 480}}</string>
+ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">15</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">GoalsViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Classes/GoalsViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">GoalsViewController</string>
+ <string key="superclassName">UITableViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SaveUpAppDelegate</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>navigationController</string>
+ <string>window</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>UINavigationController</string>
+ <string>UIWindow</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Classes/SaveUpAppDelegate.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="341122108">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIApplication</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIBarButtonItem</string>
+ <string key="superclassName">UIBarItem</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIBarItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="551149309">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="958137304">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UINavigationItem</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="551149309"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIResponder</string>
+ <string key="superclassName">NSObject</string>
+ <reference key="sourceIdentifier" ref="341122108"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchBar</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UISearchDisplayController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UITableViewController</string>
+ <string key="superclassName">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIView</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <reference key="sourceIdentifier" ref="958137304"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIViewController</string>
+ <string key="superclassName">UIResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">UIWindow</string>
+ <string key="superclassName">UIView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
+ <integer value="800" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
+ <integer value="3100" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">SaveUp.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <string key="IBCocoaTouchPluginVersion">87</string>
+ </data>
+</archive>
View
14 code/2-json/README.md
@@ -0,0 +1,14 @@
+Save Up iPhone App
+==================
+
+This version populates the table view using a synchronous request and the
+json-framework library to fetch remote goals from a scaffold-generated Rails app.
+
+Quickstart
+----------
+
+ $ rails saveup
+ $ cd saveup
+ $ rails g scaffold goal name:string amount:decimal
+ $ rake db:migrate
+ $ rails s
View
30 code/2-json/SaveUp-Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string>icon.png</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>NSMainNibFile</key>
+ <string>MainWindow</string>
+</dict>
+</plist>
View
326 code/2-json/SaveUp.xcodeproj/project.pbxproj
@@ -0,0 +1,326 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 45;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1D3623260D0F684500981E51 /* SaveUpAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* SaveUpAppDelegate.m */; };
+ 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+ 273459F911936B5B005C8C5F /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 273459F811936B5B005C8C5F /* icon.png */; };
+ 27AAD7D311937585006153B1 /* NSObject+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7C811937585006153B1 /* NSObject+SBJSON.m */; };
+ 27AAD7D411937585006153B1 /* NSString+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7CA11937585006153B1 /* NSString+SBJSON.m */; };
+ 27AAD7D511937585006153B1 /* SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7CC11937585006153B1 /* SBJSON.m */; };
+ 27AAD7D611937585006153B1 /* SBJsonBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7CE11937585006153B1 /* SBJsonBase.m */; };
+ 27AAD7D711937585006153B1 /* SBJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7D011937585006153B1 /* SBJsonParser.m */; };
+ 27AAD7D811937585006153B1 /* SBJsonWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7D211937585006153B1 /* SBJsonWriter.m */; };
+ 27AAD7E01193766E006153B1 /* Goal.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD7DF1193766E006153B1 /* Goal.m */; };
+ 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; };
+ 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; };
+ 28C286E10D94DF7D0034E888 /* GoalsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* GoalsViewController.m */; };
+ 28F335F11007B36200424DE2 /* GoalsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* GoalsViewController.xib */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 1D3623240D0F684500981E51 /* SaveUpAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SaveUpAppDelegate.h; sourceTree = "<group>"; };
+ 1D3623250D0F684500981E51 /* SaveUpAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SaveUpAppDelegate.m; sourceTree = "<group>"; };
+ 1D6058910D05DD3D006BFB54 /* SaveUp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SaveUp.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 273459F811936B5B005C8C5F /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
+ 27AAD7C611937585006153B1 /* JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSON.h; sourceTree = "<group>"; };
+ 27AAD7C711937585006153B1 /* NSObject+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+SBJSON.h"; sourceTree = "<group>"; };
+ 27AAD7C811937585006153B1 /* NSObject+SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+SBJSON.m"; sourceTree = "<group>"; };
+ 27AAD7C911937585006153B1 /* NSString+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+SBJSON.h"; sourceTree = "<group>"; };
+ 27AAD7CA11937585006153B1 /* NSString+SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+SBJSON.m"; sourceTree = "<group>"; };
+ 27AAD7CB11937585006153B1 /* SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJSON.h; sourceTree = "<group>"; };
+ 27AAD7CC11937585006153B1 /* SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJSON.m; sourceTree = "<group>"; };
+ 27AAD7CD11937585006153B1 /* SBJsonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonBase.h; sourceTree = "<group>"; };
+ 27AAD7CE11937585006153B1 /* SBJsonBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonBase.m; sourceTree = "<group>"; };
+ 27AAD7CF11937585006153B1 /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonParser.h; sourceTree = "<group>"; };
+ 27AAD7D011937585006153B1 /* SBJsonParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonParser.m; sourceTree = "<group>"; };
+ 27AAD7D111937585006153B1 /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonWriter.h; sourceTree = "<group>"; };
+ 27AAD7D211937585006153B1 /* SBJsonWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonWriter.m; sourceTree = "<group>"; };
+ 27AAD7DE1193766E006153B1 /* Goal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Goal.h; sourceTree = "<group>"; };
+ 27AAD7DF1193766E006153B1 /* Goal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Goal.m; sourceTree = "<group>"; };
+ 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 28A0AAE50D9B0CCF005BE974 /* SaveUp_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SaveUp_Prefix.pch; sourceTree = "<group>"; };
+ 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
+ 28C286DF0D94DF7D0034E888 /* GoalsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GoalsViewController.h; sourceTree = "<group>"; };
+ 28C286E00D94DF7D0034E888 /* GoalsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoalsViewController.m; sourceTree = "<group>"; };
+ 28F335F01007B36200424DE2 /* GoalsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GoalsViewController.xib; sourceTree = "<group>"; };
+ 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ 8D1107310486CEB800E47090 /* SaveUp-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "SaveUp-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
+ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
+ 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 080E96DDFE201D6D7F000001 /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ 28C286DF0D94DF7D0034E888 /* GoalsViewController.h */,
+ 28C286E00D94DF7D0034E888 /* GoalsViewController.m */,
+ 1D3623240D0F684500981E51 /* SaveUpAppDelegate.h */,
+ 1D3623250D0F684500981E51 /* SaveUpAppDelegate.m */,
+ 27AAD7DE1193766E006153B1 /* Goal.h */,
+ 27AAD7DF1193766E006153B1 /* Goal.m */,
+ );
+ path = Classes;
+ sourceTree = "<group>";
+ };
+ 19C28FACFE9D520D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1D6058910D05DD3D006BFB54 /* SaveUp.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 27AAD7C011937571006153B1 /* Vendor */ = {
+ isa = PBXGroup;
+ children = (
+ 27AAD7C511937585006153B1 /* json-framework */,
+ );
+ name = Vendor;
+ sourceTree = "<group>";
+ };
+ 27AAD7C511937585006153B1 /* json-framework */ = {
+ isa = PBXGroup;
+ children = (
+ 27AAD7C611937585006153B1 /* JSON.h */,
+ 27AAD7C711937585006153B1 /* NSObject+SBJSON.h */,
+ 27AAD7C811937585006153B1 /* NSObject+SBJSON.m */,
+ 27AAD7C911937585006153B1 /* NSString+SBJSON.h */,
+ 27AAD7CA11937585006153B1 /* NSString+SBJSON.m */,
+ 27AAD7CB11937585006153B1 /* SBJSON.h */,
+ 27AAD7CC11937585006153B1 /* SBJSON.m */,
+ 27AAD7CD11937585006153B1 /* SBJsonBase.h */,
+ 27AAD7CE11937585006153B1 /* SBJsonBase.m */,
+ 27AAD7CF11937585006153B1 /* SBJsonParser.h */,
+ 27AAD7D011937585006153B1 /* SBJsonParser.m */,
+ 27AAD7D111937585006153B1 /* SBJsonWriter.h */,
+ 27AAD7D211937585006153B1 /* SBJsonWriter.m */,
+ );
+ path = "json-framework";
+ sourceTree = "<group>";
+ };
+ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+ isa = PBXGroup;
+ children = (
+ 27AAD7C011937571006153B1 /* Vendor */,
+ 080E96DDFE201D6D7F000001 /* Classes */,
+ 29B97315FDCFA39411CA2CEA /* Other Sources */,
+ 29B97317FDCFA39411CA2CEA /* Resources */,
+ 29B97323FDCFA39411CA2CEA /* Frameworks */,
+ 19C28FACFE9D520D11CA2CBB /* Products */,
+ );
+ name = CustomTemplate;
+ sourceTree = "<group>";
+ };
+ 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+ isa = PBXGroup;
+ children = (
+ 28A0AAE50D9B0CCF005BE974 /* SaveUp_Prefix.pch */,
+ 29B97316FDCFA39411CA2CEA /* main.m */,
+ );
+ name = "Other Sources";
+ sourceTree = "<group>";
+ };
+ 29B97317FDCFA39411CA2CEA /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 273459F811936B5B005C8C5F /* icon.png */,
+ 28F335F01007B36200424DE2 /* GoalsViewController.xib */,
+ 28AD735F0D9D9599002E5188 /* MainWindow.xib */,
+ 8D1107310486CEB800E47090 /* SaveUp-Info.plist */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
+ 1D30AB110D05D00D00671497 /* Foundation.framework */,
+ 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1D6058900D05DD3D006BFB54 /* SaveUp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SaveUp" */;
+ buildPhases = (
+ 1D60588D0D05DD3D006BFB54 /* Resources */,
+ 1D60588E0D05DD3D006BFB54 /* Sources */,
+ 1D60588F0D05DD3D006BFB54 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SaveUp;
+ productName = SaveUp;
+ productReference = 1D6058910D05DD3D006BFB54 /* SaveUp.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 29B97313FDCFA39411CA2CEA /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SaveUp" */;
+ compatibilityVersion = "Xcode 3.1";
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ en,
+ );
+ mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1D6058900D05DD3D006BFB54 /* SaveUp */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 1D60588D0D05DD3D006BFB54 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */,
+ 28F335F11007B36200424DE2 /* GoalsViewController.xib in Resources */,
+ 273459F911936B5B005C8C5F /* icon.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 1D60588E0D05DD3D006BFB54 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D60589B0D05DD56006BFB54 /* main.m in Sources */,
+ 1D3623260D0F684500981E51 /* SaveUpAppDelegate.m in Sources */,
+ 28C286E10D94DF7D0034E888 /* GoalsViewController.m in Sources */,
+ 27AAD7D311937585006153B1 /* NSObject+SBJSON.m in Sources */,
+ 27AAD7D411937585006153B1 /* NSString+SBJSON.m in Sources */,
+ 27AAD7D511937585006153B1 /* SBJSON.m in Sources */,
+ 27AAD7D611937585006153B1 /* SBJsonBase.m in Sources */,
+ 27AAD7D711937585006153B1 /* SBJsonParser.m in Sources */,
+ 27AAD7D811937585006153B1 /* SBJsonWriter.m in Sources */,
+ 27AAD7E01193766E006153B1 /* Goal.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 1D6058940D05DD3E006BFB54 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = SaveUp_Prefix.pch;
+ INFOPLIST_FILE = "SaveUp-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 3.1.3;
+ PRODUCT_NAME = SaveUp;
+ SDKROOT = iphonesimulator3.1.3;
+ };
+ name = Debug;
+ };
+ 1D6058950D05DD3E006BFB54 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = SaveUp_Prefix.pch;
+ INFOPLIST_FILE = "SaveUp-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 3.1.3;
+ PRODUCT_NAME = SaveUp;
+ SDKROOT = iphonesimulator3.1.3;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ C01FCF4F08A954540054247B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = iphoneos3.1.3;
+ };
+ name = Debug;
+ };
+ C01FCF5008A954540054247B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ PREBINDING = NO;
+ SDKROOT = iphoneos3.1.3;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "SaveUp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D6058940D05DD3E006BFB54 /* Debug */,
+ 1D6058950D05DD3E006BFB54 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SaveUp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C01FCF4F08A954540054247B /* Debug */,
+ C01FCF5008A954540054247B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}
View
14 code/2-json/SaveUp_Prefix.pch
@@ -0,0 +1,14 @@
+//
+// Prefix header for all source files of the 'SaveUp' target in the 'SaveUp' project
+//
+#import <Availability.h>
+
+#ifndef __IPHONE_3_0
+#warning "This project uses features only available in iPhone SDK 3.0 and later."
+#endif
+
+
+#ifdef __OBJC__
+ #import <Foundation/Foundation.h>
+ #import <UIKit/UIKit.h>
+#endif
View
BIN  code/2-json/icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
50 code/2-json/json-framework/JSON.h
@@ -0,0 +1,50 @@
+/*
+ Copyright (C) 2009 Stig Brautaset. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of the author nor the names of its contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ @mainpage A strict JSON parser and generator for Objective-C
+
+ JSON (JavaScript Object Notation) is a lightweight data-interchange
+ format. This framework provides two apis for parsing and generating
+ JSON. One standard object-based and a higher level api consisting of
+ categories added to existing Objective-C classes.
+
+ Learn more on the http://code.google.com/p/json-framework project site.
+
+ This framework does its best to be as strict as possible, both in what it
+ accepts and what it generates. For example, it does not support trailing commas
+ in arrays or objects. Nor does it support embedded comments, or
+ anything else not in the JSON specification. This is considered a feature.
+
+*/
+
+#import "SBJSON.h"
+#import "NSObject+SBJSON.h"
+#import "NSString+SBJSON.h"
+
View
68 code/2-json/json-framework/NSObject+SBJSON.h
@@ -0,0 +1,68 @@
+/*
+ Copyright (C) 2009 Stig Brautaset. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of the author nor the names of its contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Foundation/Foundation.h>
+
+
+/**
+ @brief Adds JSON generation to Foundation classes
+
+ This is a category on NSObject that adds methods for returning JSON representations
+ of standard objects to the objects themselves. This means you can call the
+ -JSONRepresentation method on an NSArray object and it'll do what you want.
+ */
+@interface NSObject (NSObject_SBJSON)
+
+/**
+ @brief Returns a string containing the receiver encoded as a JSON fragment.
+
+ This method is added as a category on NSObject but is only actually
+ supported for the following objects:
+ @li NSDictionary
+ @li NSArray
+ @li NSString
+ @li NSNumber (also used for booleans)
+ @li NSNull
+
+ @deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed.
+ */
+- (NSString *)JSONFragment;
+
+/**
+ @brief Returns a string containing the receiver encoded in JSON.
+
+ This method is added as a category on NSObject but is only actually
+ supported for the following objects:
+ @li NSDictionary
+ @li NSArray
+ */
+- (NSString *)JSONRepresentation;
+
+@end
+
View
53 code/2-json/json-framework/NSObject+SBJSON.m
@@ -0,0 +1,53 @@
+/*
+ Copyright (C) 2009 Stig Brautaset. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of the author nor the names of its contributors may be used
+ to endorse or promote products derived from this software without specific
+ prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "NSObject+SBJSON.h"
+#import "SBJsonWriter.h"
+
+@implementation NSObject (NSObject_SBJSON)
+
+- (NSString *)JSONFragment {
+ SBJsonWriter *jsonWriter = [SBJsonWriter new];
+ NSString *json = [jsonWriter stringWithFragment:self];
+ if (!json)
+ NSLog(@"-JSONFragment failed. Error trace is: %@", [jsonWriter errorTrace]);
+ [jsonWriter release