From 4b61804aa0591811bccd7e59f6e8e70029aceac9 Mon Sep 17 00:00:00 2001 From: saltfactory Date: Sun, 29 Jul 2012 10:04:22 +0900 Subject: [PATCH 1/3] sync --- .../project.pbxproj | 454 ++++++++++++++++++ .../SFUITableViewTutorial/AppDelegate.h | 22 + .../SFUITableViewTutorial/AppDelegate.m | 149 ++++++ .../SFUITableViewTutorial-Info.plist | 38 ++ .../SFUITableViewTutorial-Prefix.pch | 15 + .../.xccurrentversion | 8 + .../contents | 4 + .../en.lproj/InfoPlist.strings | 2 + .../SFUITableViewTutorial/main.m | 18 + .../SFUITableViewTutorialTests-Info.plist | 22 + .../SFUITableViewTutorialTests.h | 13 + .../SFUITableViewTutorialTests.m | 32 ++ .../en.lproj/InfoPlist.strings | 2 + 13 files changed, 779 insertions(+) create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m create mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj b/Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4dd52b2 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj @@ -0,0 +1,454 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + B37A54CD15C3ECEB00600CEB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CC15C3ECEB00600CEB /* UIKit.framework */; }; + B37A54CF15C3ECEB00600CEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CE15C3ECEB00600CEB /* Foundation.framework */; }; + B37A54D115C3ECEB00600CEB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54D015C3ECEB00600CEB /* CoreGraphics.framework */; }; + B37A54D315C3ECEB00600CEB /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54D215C3ECEB00600CEB /* CoreData.framework */; }; + B37A54D915C3ECEB00600CEB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B37A54D715C3ECEB00600CEB /* InfoPlist.strings */; }; + B37A54DB15C3ECEB00600CEB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B37A54DA15C3ECEB00600CEB /* main.m */; }; + B37A54DF15C3ECEB00600CEB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B37A54DE15C3ECEB00600CEB /* AppDelegate.m */; }; + B37A54E215C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B37A54E015C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld */; }; + B37A54EA15C3ECEB00600CEB /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54E915C3ECEB00600CEB /* SenTestingKit.framework */; }; + B37A54EB15C3ECEB00600CEB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CC15C3ECEB00600CEB /* UIKit.framework */; }; + B37A54EC15C3ECEB00600CEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CE15C3ECEB00600CEB /* Foundation.framework */; }; + B37A54ED15C3ECEB00600CEB /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54D215C3ECEB00600CEB /* CoreData.framework */; }; + B37A54F515C3ECEB00600CEB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B37A54F315C3ECEB00600CEB /* InfoPlist.strings */; }; + B37A54F815C3ECEB00600CEB /* SFUITableViewTutorialTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B37A54F715C3ECEB00600CEB /* SFUITableViewTutorialTests.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B37A54EE15C3ECEB00600CEB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B37A54BF15C3ECEB00600CEB /* Project object */; + proxyType = 1; + remoteGlobalIDString = B37A54C715C3ECEB00600CEB; + remoteInfo = SFUITableViewTutorial; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + B37A54C815C3ECEB00600CEB /* SFUITableViewTutorial.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SFUITableViewTutorial.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B37A54CC15C3ECEB00600CEB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + B37A54CE15C3ECEB00600CEB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B37A54D015C3ECEB00600CEB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + B37A54D215C3ECEB00600CEB /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + B37A54D615C3ECEB00600CEB /* SFUITableViewTutorial-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFUITableViewTutorial-Info.plist"; sourceTree = ""; }; + B37A54D815C3ECEB00600CEB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B37A54DA15C3ECEB00600CEB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B37A54DC15C3ECEB00600CEB /* SFUITableViewTutorial-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SFUITableViewTutorial-Prefix.pch"; sourceTree = ""; }; + B37A54DD15C3ECEB00600CEB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + B37A54DE15C3ECEB00600CEB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + B37A54E115C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = SFUITableViewTutorial.xcdatamodel; sourceTree = ""; }; + B37A54E815C3ECEB00600CEB /* SFUITableViewTutorialTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SFUITableViewTutorialTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + B37A54E915C3ECEB00600CEB /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + B37A54F215C3ECEB00600CEB /* SFUITableViewTutorialTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFUITableViewTutorialTests-Info.plist"; sourceTree = ""; }; + B37A54F415C3ECEB00600CEB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B37A54F615C3ECEB00600CEB /* SFUITableViewTutorialTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFUITableViewTutorialTests.h; sourceTree = ""; }; + B37A54F715C3ECEB00600CEB /* SFUITableViewTutorialTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFUITableViewTutorialTests.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B37A54C515C3ECEB00600CEB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B37A54CD15C3ECEB00600CEB /* UIKit.framework in Frameworks */, + B37A54CF15C3ECEB00600CEB /* Foundation.framework in Frameworks */, + B37A54D115C3ECEB00600CEB /* CoreGraphics.framework in Frameworks */, + B37A54D315C3ECEB00600CEB /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B37A54E415C3ECEB00600CEB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B37A54EA15C3ECEB00600CEB /* SenTestingKit.framework in Frameworks */, + B37A54EB15C3ECEB00600CEB /* UIKit.framework in Frameworks */, + B37A54EC15C3ECEB00600CEB /* Foundation.framework in Frameworks */, + B37A54ED15C3ECEB00600CEB /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B37A54BD15C3ECEB00600CEB = { + isa = PBXGroup; + children = ( + B37A54D415C3ECEB00600CEB /* SFUITableViewTutorial */, + B37A54F015C3ECEB00600CEB /* SFUITableViewTutorialTests */, + B37A54CB15C3ECEB00600CEB /* Frameworks */, + B37A54C915C3ECEB00600CEB /* Products */, + ); + sourceTree = ""; + }; + B37A54C915C3ECEB00600CEB /* Products */ = { + isa = PBXGroup; + children = ( + B37A54C815C3ECEB00600CEB /* SFUITableViewTutorial.app */, + B37A54E815C3ECEB00600CEB /* SFUITableViewTutorialTests.octest */, + ); + name = Products; + sourceTree = ""; + }; + B37A54CB15C3ECEB00600CEB /* Frameworks */ = { + isa = PBXGroup; + children = ( + B37A54CC15C3ECEB00600CEB /* UIKit.framework */, + B37A54CE15C3ECEB00600CEB /* Foundation.framework */, + B37A54D015C3ECEB00600CEB /* CoreGraphics.framework */, + B37A54D215C3ECEB00600CEB /* CoreData.framework */, + B37A54E915C3ECEB00600CEB /* SenTestingKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B37A54D415C3ECEB00600CEB /* SFUITableViewTutorial */ = { + isa = PBXGroup; + children = ( + B37A54DD15C3ECEB00600CEB /* AppDelegate.h */, + B37A54DE15C3ECEB00600CEB /* AppDelegate.m */, + B37A54E015C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld */, + B37A54D515C3ECEB00600CEB /* Supporting Files */, + ); + path = SFUITableViewTutorial; + sourceTree = ""; + }; + B37A54D515C3ECEB00600CEB /* Supporting Files */ = { + isa = PBXGroup; + children = ( + B37A54D615C3ECEB00600CEB /* SFUITableViewTutorial-Info.plist */, + B37A54D715C3ECEB00600CEB /* InfoPlist.strings */, + B37A54DA15C3ECEB00600CEB /* main.m */, + B37A54DC15C3ECEB00600CEB /* SFUITableViewTutorial-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + B37A54F015C3ECEB00600CEB /* SFUITableViewTutorialTests */ = { + isa = PBXGroup; + children = ( + B37A54F615C3ECEB00600CEB /* SFUITableViewTutorialTests.h */, + B37A54F715C3ECEB00600CEB /* SFUITableViewTutorialTests.m */, + B37A54F115C3ECEB00600CEB /* Supporting Files */, + ); + path = SFUITableViewTutorialTests; + sourceTree = ""; + }; + B37A54F115C3ECEB00600CEB /* Supporting Files */ = { + isa = PBXGroup; + children = ( + B37A54F215C3ECEB00600CEB /* SFUITableViewTutorialTests-Info.plist */, + B37A54F315C3ECEB00600CEB /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B37A54C715C3ECEB00600CEB /* SFUITableViewTutorial */ = { + isa = PBXNativeTarget; + buildConfigurationList = B37A54FB15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorial" */; + buildPhases = ( + B37A54C415C3ECEB00600CEB /* Sources */, + B37A54C515C3ECEB00600CEB /* Frameworks */, + B37A54C615C3ECEB00600CEB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SFUITableViewTutorial; + productName = SFUITableViewTutorial; + productReference = B37A54C815C3ECEB00600CEB /* SFUITableViewTutorial.app */; + productType = "com.apple.product-type.application"; + }; + B37A54E715C3ECEB00600CEB /* SFUITableViewTutorialTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B37A54FE15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorialTests" */; + buildPhases = ( + B37A54E315C3ECEB00600CEB /* Sources */, + B37A54E415C3ECEB00600CEB /* Frameworks */, + B37A54E515C3ECEB00600CEB /* Resources */, + B37A54E615C3ECEB00600CEB /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + B37A54EF15C3ECEB00600CEB /* PBXTargetDependency */, + ); + name = SFUITableViewTutorialTests; + productName = SFUITableViewTutorialTests; + productReference = B37A54E815C3ECEB00600CEB /* SFUITableViewTutorialTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B37A54BF15C3ECEB00600CEB /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + ORGANIZATIONNAME = "SungKwang Song"; + }; + buildConfigurationList = B37A54C215C3ECEB00600CEB /* Build configuration list for PBXProject "SFUITableViewTutorial" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = B37A54BD15C3ECEB00600CEB; + productRefGroup = B37A54C915C3ECEB00600CEB /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B37A54C715C3ECEB00600CEB /* SFUITableViewTutorial */, + B37A54E715C3ECEB00600CEB /* SFUITableViewTutorialTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B37A54C615C3ECEB00600CEB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37A54D915C3ECEB00600CEB /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B37A54E515C3ECEB00600CEB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37A54F515C3ECEB00600CEB /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + B37A54E615C3ECEB00600CEB /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B37A54C415C3ECEB00600CEB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37A54DB15C3ECEB00600CEB /* main.m in Sources */, + B37A54DF15C3ECEB00600CEB /* AppDelegate.m in Sources */, + B37A54E215C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B37A54E315C3ECEB00600CEB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B37A54F815C3ECEB00600CEB /* SFUITableViewTutorialTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B37A54EF15C3ECEB00600CEB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B37A54C715C3ECEB00600CEB /* SFUITableViewTutorial */; + targetProxy = B37A54EE15C3ECEB00600CEB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B37A54D715C3ECEB00600CEB /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B37A54D815C3ECEB00600CEB /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B37A54F315C3ECEB00600CEB /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B37A54F415C3ECEB00600CEB /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B37A54F915C3ECEB00600CEB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + SDKROOT = iphoneos; + }; + name = Debug; + }; + B37A54FA15C3ECEB00600CEB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B37A54FC15C3ECEB00600CEB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFUITableViewTutorial/SFUITableViewTutorial-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + B37A54FD15C3ECEB00600CEB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFUITableViewTutorial/SFUITableViewTutorial-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + B37A54FF15C3ECEB00600CEB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SFUITableViewTutorial.app/SFUITableViewTutorial"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + B37A550015C3ECEB00600CEB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SFUITableViewTutorial.app/SFUITableViewTutorial"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B37A54C215C3ECEB00600CEB /* Build configuration list for PBXProject "SFUITableViewTutorial" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B37A54F915C3ECEB00600CEB /* Debug */, + B37A54FA15C3ECEB00600CEB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B37A54FB15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorial" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B37A54FC15C3ECEB00600CEB /* Debug */, + B37A54FD15C3ECEB00600CEB /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + B37A54FE15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorialTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B37A54FF15C3ECEB00600CEB /* Debug */, + B37A550015C3ECEB00600CEB /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + B37A54E015C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + B37A54E115C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodel */, + ); + currentVersion = B37A54E115C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodel */; + path = SFUITableViewTutorial.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = B37A54BF15C3ECEB00600CEB /* Project object */; +} diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h new file mode 100644 index 0000000..5b16de2 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h @@ -0,0 +1,22 @@ +// +// AppDelegate.h +// SFUITableViewTutorial +// +// Created by SungKwang Song on 7/28/12. +// Copyright (c) 2012 SungKwang Song. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; +@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; +@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; + +- (void)saveContext; +- (NSURL *)applicationDocumentsDirectory; + +@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m new file mode 100644 index 0000000..ecc4dcb --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m @@ -0,0 +1,149 @@ +// +// AppDelegate.m +// SFUITableViewTutorial +// +// Created by SungKwang Song on 7/28/12. +// Copyright (c) 2012 SungKwang Song. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +@synthesize managedObjectContext = _managedObjectContext; +@synthesize managedObjectModel = _managedObjectModel; +@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + // Override point for customization after application launch. + self.window.backgroundColor = [UIColor whiteColor]; + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Saves changes in the application's managed object context before the application terminates. + [self saveContext]; +} + +- (void)saveContext +{ + NSError *error = nil; + NSManagedObjectContext *managedObjectContext = self.managedObjectContext; + if (managedObjectContext != nil) { + if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { + // Replace this implementation with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + } +} + +#pragma mark - Core Data stack + +// Returns the managed object context for the application. +// If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application. +- (NSManagedObjectContext *)managedObjectContext +{ + if (_managedObjectContext != nil) { + return _managedObjectContext; + } + + NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; + if (coordinator != nil) { + _managedObjectContext = [[NSManagedObjectContext alloc] init]; + [_managedObjectContext setPersistentStoreCoordinator:coordinator]; + } + return _managedObjectContext; +} + +// Returns the managed object model for the application. +// If the model doesn't already exist, it is created from the application's model. +- (NSManagedObjectModel *)managedObjectModel +{ + if (_managedObjectModel != nil) { + return _managedObjectModel; + } + NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"SFUITableViewTutorial" withExtension:@"momd"]; + _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; + return _managedObjectModel; +} + +// Returns the persistent store coordinator for the application. +// If the coordinator doesn't already exist, it is created and the application's store added to it. +- (NSPersistentStoreCoordinator *)persistentStoreCoordinator +{ + if (_persistentStoreCoordinator != nil) { + return _persistentStoreCoordinator; + } + + NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"SFUITableViewTutorial.sqlite"]; + + NSError *error = nil; + _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; + if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { + /* + Replace this implementation with code to handle the error appropriately. + + abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + Typical reasons for an error here include: + * The persistent store is not accessible; + * The schema for the persistent store is incompatible with current managed object model. + Check the error message to determine what the actual problem was. + + + If the persistent store is not accessible, there is typically something wrong with the file path. Often, a file URL is pointing into the application's resources directory instead of a writeable directory. + + If you encounter schema incompatibility errors during development, you can reduce their frequency by: + * Simply deleting the existing store: + [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil] + + * Performing automatic lightweight migration by passing the following dictionary as the options parameter: + @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES} + + Lightweight migration will only work for a limited set of schema changes; consult "Core Data Model Versioning and Data Migration Programming Guide" for details. + + */ + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + + return _persistentStoreCoordinator; +} + +#pragma mark - Application's Documents directory + +// Returns the URL to the application's Documents directory. +- (NSURL *)applicationDocumentsDirectory +{ + return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; +} + +@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist new file mode 100644 index 0000000..31883c4 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + net.saltfactory.tutorial.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch new file mode 100644 index 0000000..f194262 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch @@ -0,0 +1,15 @@ +// +// Prefix header for all source files of the 'SFUITableViewTutorial' target in the 'SFUITableViewTutorial' project +// + +#import + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iOS SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import + #import +#endif diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..64d47a1 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + SFUITableViewTutorial.xcdatamodel + + diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents new file mode 100644 index 0000000..193f33c --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m new file mode 100644 index 0000000..f66047a --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m @@ -0,0 +1,18 @@ +// +// main.m +// SFUITableViewTutorial +// +// Created by SungKwang Song on 7/28/12. +// Copyright (c) 2012 SungKwang Song. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist new file mode 100644 index 0000000..135a71a --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + net.saltfactory.tutorial.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h new file mode 100644 index 0000000..ea5b519 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h @@ -0,0 +1,13 @@ +// +// SFUITableViewTutorialTests.h +// SFUITableViewTutorialTests +// +// Created by SungKwang Song on 7/28/12. +// Copyright (c) 2012 SungKwang Song. All rights reserved. +// + +#import + +@interface SFUITableViewTutorialTests : SenTestCase + +@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m new file mode 100644 index 0000000..92a0b79 --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m @@ -0,0 +1,32 @@ +// +// SFUITableViewTutorialTests.m +// SFUITableViewTutorialTests +// +// Created by SungKwang Song on 7/28/12. +// Copyright (c) 2012 SungKwang Song. All rights reserved. +// + +#import "SFUITableViewTutorialTests.h" + +@implementation SFUITableViewTutorialTests + +- (void)setUp +{ + [super setUp]; + + // Set-up code here. +} + +- (void)tearDown +{ + // Tear-down code here. + + [super tearDown]; +} + +- (void)testExample +{ + STFail(@"Unit tests are not implemented yet in SFUITableViewTutorialTests"); +} + +@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + From a84374dabff0f30da1e53214d1bca6c431772994 Mon Sep 17 00:00:00 2001 From: saltfactory Date: Sun, 29 Jul 2012 10:04:34 +0900 Subject: [PATCH 2/3] init workspaces --- .../project.pbxproj | 454 ------------------ .../SFUITableViewTutorial/AppDelegate.h | 22 - .../SFUITableViewTutorial/AppDelegate.m | 149 ------ .../SFUITableViewTutorial-Info.plist | 38 -- .../SFUITableViewTutorial-Prefix.pch | 15 - .../.xccurrentversion | 8 - .../contents | 4 - .../en.lproj/InfoPlist.strings | 2 - .../SFUITableViewTutorial/main.m | 18 - .../SFUITableViewTutorialTests-Info.plist | 22 - .../SFUITableViewTutorialTests.h | 13 - .../SFUITableViewTutorialTests.m | 32 -- .../en.lproj/InfoPlist.strings | 2 - 13 files changed, 779 deletions(-) delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m delete mode 100644 Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj b/Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj deleted file mode 100644 index 4dd52b2..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial.xcodeproj/project.pbxproj +++ /dev/null @@ -1,454 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - B37A54CD15C3ECEB00600CEB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CC15C3ECEB00600CEB /* UIKit.framework */; }; - B37A54CF15C3ECEB00600CEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CE15C3ECEB00600CEB /* Foundation.framework */; }; - B37A54D115C3ECEB00600CEB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54D015C3ECEB00600CEB /* CoreGraphics.framework */; }; - B37A54D315C3ECEB00600CEB /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54D215C3ECEB00600CEB /* CoreData.framework */; }; - B37A54D915C3ECEB00600CEB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B37A54D715C3ECEB00600CEB /* InfoPlist.strings */; }; - B37A54DB15C3ECEB00600CEB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B37A54DA15C3ECEB00600CEB /* main.m */; }; - B37A54DF15C3ECEB00600CEB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B37A54DE15C3ECEB00600CEB /* AppDelegate.m */; }; - B37A54E215C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B37A54E015C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld */; }; - B37A54EA15C3ECEB00600CEB /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54E915C3ECEB00600CEB /* SenTestingKit.framework */; }; - B37A54EB15C3ECEB00600CEB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CC15C3ECEB00600CEB /* UIKit.framework */; }; - B37A54EC15C3ECEB00600CEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54CE15C3ECEB00600CEB /* Foundation.framework */; }; - B37A54ED15C3ECEB00600CEB /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37A54D215C3ECEB00600CEB /* CoreData.framework */; }; - B37A54F515C3ECEB00600CEB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B37A54F315C3ECEB00600CEB /* InfoPlist.strings */; }; - B37A54F815C3ECEB00600CEB /* SFUITableViewTutorialTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B37A54F715C3ECEB00600CEB /* SFUITableViewTutorialTests.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - B37A54EE15C3ECEB00600CEB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = B37A54BF15C3ECEB00600CEB /* Project object */; - proxyType = 1; - remoteGlobalIDString = B37A54C715C3ECEB00600CEB; - remoteInfo = SFUITableViewTutorial; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - B37A54C815C3ECEB00600CEB /* SFUITableViewTutorial.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SFUITableViewTutorial.app; sourceTree = BUILT_PRODUCTS_DIR; }; - B37A54CC15C3ECEB00600CEB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - B37A54CE15C3ECEB00600CEB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - B37A54D015C3ECEB00600CEB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - B37A54D215C3ECEB00600CEB /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - B37A54D615C3ECEB00600CEB /* SFUITableViewTutorial-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFUITableViewTutorial-Info.plist"; sourceTree = ""; }; - B37A54D815C3ECEB00600CEB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - B37A54DA15C3ECEB00600CEB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - B37A54DC15C3ECEB00600CEB /* SFUITableViewTutorial-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SFUITableViewTutorial-Prefix.pch"; sourceTree = ""; }; - B37A54DD15C3ECEB00600CEB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - B37A54DE15C3ECEB00600CEB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - B37A54E115C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = SFUITableViewTutorial.xcdatamodel; sourceTree = ""; }; - B37A54E815C3ECEB00600CEB /* SFUITableViewTutorialTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SFUITableViewTutorialTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - B37A54E915C3ECEB00600CEB /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; - B37A54F215C3ECEB00600CEB /* SFUITableViewTutorialTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFUITableViewTutorialTests-Info.plist"; sourceTree = ""; }; - B37A54F415C3ECEB00600CEB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - B37A54F615C3ECEB00600CEB /* SFUITableViewTutorialTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFUITableViewTutorialTests.h; sourceTree = ""; }; - B37A54F715C3ECEB00600CEB /* SFUITableViewTutorialTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFUITableViewTutorialTests.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - B37A54C515C3ECEB00600CEB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B37A54CD15C3ECEB00600CEB /* UIKit.framework in Frameworks */, - B37A54CF15C3ECEB00600CEB /* Foundation.framework in Frameworks */, - B37A54D115C3ECEB00600CEB /* CoreGraphics.framework in Frameworks */, - B37A54D315C3ECEB00600CEB /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B37A54E415C3ECEB00600CEB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B37A54EA15C3ECEB00600CEB /* SenTestingKit.framework in Frameworks */, - B37A54EB15C3ECEB00600CEB /* UIKit.framework in Frameworks */, - B37A54EC15C3ECEB00600CEB /* Foundation.framework in Frameworks */, - B37A54ED15C3ECEB00600CEB /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - B37A54BD15C3ECEB00600CEB = { - isa = PBXGroup; - children = ( - B37A54D415C3ECEB00600CEB /* SFUITableViewTutorial */, - B37A54F015C3ECEB00600CEB /* SFUITableViewTutorialTests */, - B37A54CB15C3ECEB00600CEB /* Frameworks */, - B37A54C915C3ECEB00600CEB /* Products */, - ); - sourceTree = ""; - }; - B37A54C915C3ECEB00600CEB /* Products */ = { - isa = PBXGroup; - children = ( - B37A54C815C3ECEB00600CEB /* SFUITableViewTutorial.app */, - B37A54E815C3ECEB00600CEB /* SFUITableViewTutorialTests.octest */, - ); - name = Products; - sourceTree = ""; - }; - B37A54CB15C3ECEB00600CEB /* Frameworks */ = { - isa = PBXGroup; - children = ( - B37A54CC15C3ECEB00600CEB /* UIKit.framework */, - B37A54CE15C3ECEB00600CEB /* Foundation.framework */, - B37A54D015C3ECEB00600CEB /* CoreGraphics.framework */, - B37A54D215C3ECEB00600CEB /* CoreData.framework */, - B37A54E915C3ECEB00600CEB /* SenTestingKit.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - B37A54D415C3ECEB00600CEB /* SFUITableViewTutorial */ = { - isa = PBXGroup; - children = ( - B37A54DD15C3ECEB00600CEB /* AppDelegate.h */, - B37A54DE15C3ECEB00600CEB /* AppDelegate.m */, - B37A54E015C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld */, - B37A54D515C3ECEB00600CEB /* Supporting Files */, - ); - path = SFUITableViewTutorial; - sourceTree = ""; - }; - B37A54D515C3ECEB00600CEB /* Supporting Files */ = { - isa = PBXGroup; - children = ( - B37A54D615C3ECEB00600CEB /* SFUITableViewTutorial-Info.plist */, - B37A54D715C3ECEB00600CEB /* InfoPlist.strings */, - B37A54DA15C3ECEB00600CEB /* main.m */, - B37A54DC15C3ECEB00600CEB /* SFUITableViewTutorial-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - B37A54F015C3ECEB00600CEB /* SFUITableViewTutorialTests */ = { - isa = PBXGroup; - children = ( - B37A54F615C3ECEB00600CEB /* SFUITableViewTutorialTests.h */, - B37A54F715C3ECEB00600CEB /* SFUITableViewTutorialTests.m */, - B37A54F115C3ECEB00600CEB /* Supporting Files */, - ); - path = SFUITableViewTutorialTests; - sourceTree = ""; - }; - B37A54F115C3ECEB00600CEB /* Supporting Files */ = { - isa = PBXGroup; - children = ( - B37A54F215C3ECEB00600CEB /* SFUITableViewTutorialTests-Info.plist */, - B37A54F315C3ECEB00600CEB /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - B37A54C715C3ECEB00600CEB /* SFUITableViewTutorial */ = { - isa = PBXNativeTarget; - buildConfigurationList = B37A54FB15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorial" */; - buildPhases = ( - B37A54C415C3ECEB00600CEB /* Sources */, - B37A54C515C3ECEB00600CEB /* Frameworks */, - B37A54C615C3ECEB00600CEB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SFUITableViewTutorial; - productName = SFUITableViewTutorial; - productReference = B37A54C815C3ECEB00600CEB /* SFUITableViewTutorial.app */; - productType = "com.apple.product-type.application"; - }; - B37A54E715C3ECEB00600CEB /* SFUITableViewTutorialTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = B37A54FE15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorialTests" */; - buildPhases = ( - B37A54E315C3ECEB00600CEB /* Sources */, - B37A54E415C3ECEB00600CEB /* Frameworks */, - B37A54E515C3ECEB00600CEB /* Resources */, - B37A54E615C3ECEB00600CEB /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - B37A54EF15C3ECEB00600CEB /* PBXTargetDependency */, - ); - name = SFUITableViewTutorialTests; - productName = SFUITableViewTutorialTests; - productReference = B37A54E815C3ECEB00600CEB /* SFUITableViewTutorialTests.octest */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - B37A54BF15C3ECEB00600CEB /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0440; - ORGANIZATIONNAME = "SungKwang Song"; - }; - buildConfigurationList = B37A54C215C3ECEB00600CEB /* Build configuration list for PBXProject "SFUITableViewTutorial" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = B37A54BD15C3ECEB00600CEB; - productRefGroup = B37A54C915C3ECEB00600CEB /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - B37A54C715C3ECEB00600CEB /* SFUITableViewTutorial */, - B37A54E715C3ECEB00600CEB /* SFUITableViewTutorialTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - B37A54C615C3ECEB00600CEB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B37A54D915C3ECEB00600CEB /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B37A54E515C3ECEB00600CEB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B37A54F515C3ECEB00600CEB /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - B37A54E615C3ECEB00600CEB /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - B37A54C415C3ECEB00600CEB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B37A54DB15C3ECEB00600CEB /* main.m in Sources */, - B37A54DF15C3ECEB00600CEB /* AppDelegate.m in Sources */, - B37A54E215C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B37A54E315C3ECEB00600CEB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B37A54F815C3ECEB00600CEB /* SFUITableViewTutorialTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - B37A54EF15C3ECEB00600CEB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = B37A54C715C3ECEB00600CEB /* SFUITableViewTutorial */; - targetProxy = B37A54EE15C3ECEB00600CEB /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - B37A54D715C3ECEB00600CEB /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - B37A54D815C3ECEB00600CEB /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - B37A54F315C3ECEB00600CEB /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - B37A54F415C3ECEB00600CEB /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - B37A54F915C3ECEB00600CEB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; - SDKROOT = iphoneos; - }; - name = Debug; - }; - B37A54FA15C3ECEB00600CEB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - B37A54FC15C3ECEB00600CEB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; - INFOPLIST_FILE = "SFUITableViewTutorial/SFUITableViewTutorial-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - B37A54FD15C3ECEB00600CEB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; - INFOPLIST_FILE = "SFUITableViewTutorial/SFUITableViewTutorial-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - B37A54FF15C3ECEB00600CEB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SFUITableViewTutorial.app/SFUITableViewTutorial"; - FRAMEWORK_SEARCH_PATHS = ( - "\"$(SDKROOT)/Developer/Library/Frameworks\"", - "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; - INFOPLIST_FILE = "SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Debug; - }; - B37A550015C3ECEB00600CEB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SFUITableViewTutorial.app/SFUITableViewTutorial"; - FRAMEWORK_SEARCH_PATHS = ( - "\"$(SDKROOT)/Developer/Library/Frameworks\"", - "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch"; - INFOPLIST_FILE = "SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - B37A54C215C3ECEB00600CEB /* Build configuration list for PBXProject "SFUITableViewTutorial" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B37A54F915C3ECEB00600CEB /* Debug */, - B37A54FA15C3ECEB00600CEB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B37A54FB15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorial" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B37A54FC15C3ECEB00600CEB /* Debug */, - B37A54FD15C3ECEB00600CEB /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; - B37A54FE15C3ECEB00600CEB /* Build configuration list for PBXNativeTarget "SFUITableViewTutorialTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B37A54FF15C3ECEB00600CEB /* Debug */, - B37A550015C3ECEB00600CEB /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; -/* End XCConfigurationList section */ - -/* Begin XCVersionGroup section */ - B37A54E015C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - B37A54E115C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodel */, - ); - currentVersion = B37A54E115C3ECEB00600CEB /* SFUITableViewTutorial.xcdatamodel */; - path = SFUITableViewTutorial.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = B37A54BF15C3ECEB00600CEB /* Project object */; -} diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h deleted file mode 100644 index 5b16de2..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// AppDelegate.h -// SFUITableViewTutorial -// -// Created by SungKwang Song on 7/28/12. -// Copyright (c) 2012 SungKwang Song. All rights reserved. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - -@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; -@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; -@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; - -- (void)saveContext; -- (NSURL *)applicationDocumentsDirectory; - -@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m deleted file mode 100644 index ecc4dcb..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/AppDelegate.m +++ /dev/null @@ -1,149 +0,0 @@ -// -// AppDelegate.m -// SFUITableViewTutorial -// -// Created by SungKwang Song on 7/28/12. -// Copyright (c) 2012 SungKwang Song. All rights reserved. -// - -#import "AppDelegate.h" - -@implementation AppDelegate - -@synthesize managedObjectContext = _managedObjectContext; -@synthesize managedObjectModel = _managedObjectModel; -@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - // Override point for customization after application launch. - self.window.backgroundColor = [UIColor whiteColor]; - [self.window makeKeyAndVisible]; - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - -- (void)applicationWillTerminate:(UIApplication *)application -{ - // Saves changes in the application's managed object context before the application terminates. - [self saveContext]; -} - -- (void)saveContext -{ - NSError *error = nil; - NSManagedObjectContext *managedObjectContext = self.managedObjectContext; - if (managedObjectContext != nil) { - if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { - // Replace this implementation with code to handle the error appropriately. - // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - NSLog(@"Unresolved error %@, %@", error, [error userInfo]); - abort(); - } - } -} - -#pragma mark - Core Data stack - -// Returns the managed object context for the application. -// If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application. -- (NSManagedObjectContext *)managedObjectContext -{ - if (_managedObjectContext != nil) { - return _managedObjectContext; - } - - NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; - if (coordinator != nil) { - _managedObjectContext = [[NSManagedObjectContext alloc] init]; - [_managedObjectContext setPersistentStoreCoordinator:coordinator]; - } - return _managedObjectContext; -} - -// Returns the managed object model for the application. -// If the model doesn't already exist, it is created from the application's model. -- (NSManagedObjectModel *)managedObjectModel -{ - if (_managedObjectModel != nil) { - return _managedObjectModel; - } - NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"SFUITableViewTutorial" withExtension:@"momd"]; - _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; - return _managedObjectModel; -} - -// Returns the persistent store coordinator for the application. -// If the coordinator doesn't already exist, it is created and the application's store added to it. -- (NSPersistentStoreCoordinator *)persistentStoreCoordinator -{ - if (_persistentStoreCoordinator != nil) { - return _persistentStoreCoordinator; - } - - NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"SFUITableViewTutorial.sqlite"]; - - NSError *error = nil; - _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; - if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { - /* - Replace this implementation with code to handle the error appropriately. - - abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - - Typical reasons for an error here include: - * The persistent store is not accessible; - * The schema for the persistent store is incompatible with current managed object model. - Check the error message to determine what the actual problem was. - - - If the persistent store is not accessible, there is typically something wrong with the file path. Often, a file URL is pointing into the application's resources directory instead of a writeable directory. - - If you encounter schema incompatibility errors during development, you can reduce their frequency by: - * Simply deleting the existing store: - [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil] - - * Performing automatic lightweight migration by passing the following dictionary as the options parameter: - @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES} - - Lightweight migration will only work for a limited set of schema changes; consult "Core Data Model Versioning and Data Migration Programming Guide" for details. - - */ - NSLog(@"Unresolved error %@, %@", error, [error userInfo]); - abort(); - } - - return _persistentStoreCoordinator; -} - -#pragma mark - Application's Documents directory - -// Returns the URL to the application's Documents directory. -- (NSURL *)applicationDocumentsDirectory -{ - return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; -} - -@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist deleted file mode 100644 index 31883c4..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Info.plist +++ /dev/null @@ -1,38 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - net.saltfactory.tutorial.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch deleted file mode 100644 index f194262..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial-Prefix.pch +++ /dev/null @@ -1,15 +0,0 @@ -// -// Prefix header for all source files of the 'SFUITableViewTutorial' target in the 'SFUITableViewTutorial' project -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iOS SDK 3.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import - #import -#endif diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion deleted file mode 100644 index 64d47a1..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/.xccurrentversion +++ /dev/null @@ -1,8 +0,0 @@ - - - - - _XCCurrentVersionName - SFUITableViewTutorial.xcdatamodel - - diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents deleted file mode 100644 index 193f33c..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/SFUITableViewTutorial.xcdatamodeld/SFUITableViewTutorial.xcdatamodel/contents +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m b/Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m deleted file mode 100644 index f66047a..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorial/main.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// main.m -// SFUITableViewTutorial -// -// Created by SungKwang Song on 7/28/12. -// Copyright (c) 2012 SungKwang Song. All rights reserved. -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist deleted file mode 100644 index 135a71a..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - net.saltfactory.tutorial.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h deleted file mode 100644 index ea5b519..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// SFUITableViewTutorialTests.h -// SFUITableViewTutorialTests -// -// Created by SungKwang Song on 7/28/12. -// Copyright (c) 2012 SungKwang Song. All rights reserved. -// - -#import - -@interface SFUITableViewTutorialTests : SenTestCase - -@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m deleted file mode 100644 index 92a0b79..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/SFUITableViewTutorialTests.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// SFUITableViewTutorialTests.m -// SFUITableViewTutorialTests -// -// Created by SungKwang Song on 7/28/12. -// Copyright (c) 2012 SungKwang Song. All rights reserved. -// - -#import "SFUITableViewTutorialTests.h" - -@implementation SFUITableViewTutorialTests - -- (void)setUp -{ - [super setUp]; - - // Set-up code here. -} - -- (void)tearDown -{ - // Tear-down code here. - - [super tearDown]; -} - -- (void)testExample -{ - STFail(@"Unit tests are not implemented yet in SFUITableViewTutorialTests"); -} - -@end diff --git a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings b/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/Projects/SFUITableViewTutorial/SFUITableViewTutorialTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - From 8556cb89c48c466c28d3c293785f4338208c3660 Mon Sep 17 00:00:00 2001 From: saltfactory Date: Fri, 17 Aug 2012 16:38:13 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EC=95=84=EC=9D=B4=ED=8F=B0=EA=B3=BC=20iTun?= =?UTF-8?q?es=20=ED=8C=8C=EC=9D=BC=20=EA=B3=B5=EC=9C=A0=20=EC=97=B0?= =?UTF-8?q?=EC=8A=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 465 ++++++++++++++++++ .../SFFileSharingTutorial/SFAppDelegate.h | 22 + .../SFFileSharingTutorial/SFAppDelegate.m | 154 ++++++ .../SFFileSharingTutorial-Info.plist | 40 ++ .../SFFileSharingTutorial-Prefix.pch | 15 + .../.xccurrentversion | 8 + .../contents | 4 + .../SFFilesTableViewController.h | 13 + .../SFFilesTableViewController.m | 150 ++++++ .../en.lproj/InfoPlist.strings | 2 + .../SFFileSharingTutorial/main.m | 18 + .../SFFileSharingTutorialTests-Info.plist | 22 + .../SFFileSharingTutorialTests.h | 13 + .../SFFileSharingTutorialTests.m | 32 ++ .../en.lproj/InfoPlist.strings | 2 + Projects/SFFileSharingTutorial/test.jpg | Bin 0 -> 30738 bytes .../contents.xcworkspacedata | 3 + 17 files changed, 963 insertions(+) create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial.xcodeproj/project.pbxproj create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.h create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.m create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Info.plist create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/.xccurrentversion create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/SFFileSharingTutorial.xcdatamodel/contents create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.h create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.m create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/en.lproj/InfoPlist.strings create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorial/main.m create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests-Info.plist create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.h create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.m create mode 100644 Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/en.lproj/InfoPlist.strings create mode 100644 Projects/SFFileSharingTutorial/test.jpg diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial.xcodeproj/project.pbxproj b/Projects/SFFileSharingTutorial/SFFileSharingTutorial.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ff04eab --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial.xcodeproj/project.pbxproj @@ -0,0 +1,465 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + B364A23E15DE1FC7005618BF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A23D15DE1FC7005618BF /* UIKit.framework */; }; + B364A24015DE1FC7005618BF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A23F15DE1FC7005618BF /* Foundation.framework */; }; + B364A24215DE1FC7005618BF /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A24115DE1FC7005618BF /* CoreGraphics.framework */; }; + B364A24415DE1FC7005618BF /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A24315DE1FC7005618BF /* CoreData.framework */; }; + B364A24A15DE1FC7005618BF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B364A24815DE1FC7005618BF /* InfoPlist.strings */; }; + B364A24C15DE1FC7005618BF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B364A24B15DE1FC7005618BF /* main.m */; }; + B364A25015DE1FC7005618BF /* SFAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B364A24F15DE1FC7005618BF /* SFAppDelegate.m */; }; + B364A25315DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B364A25115DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodeld */; }; + B364A25B15DE1FC8005618BF /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A25A15DE1FC8005618BF /* SenTestingKit.framework */; }; + B364A25C15DE1FC8005618BF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A23D15DE1FC7005618BF /* UIKit.framework */; }; + B364A25D15DE1FC8005618BF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A23F15DE1FC7005618BF /* Foundation.framework */; }; + B364A25E15DE1FC8005618BF /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B364A24315DE1FC7005618BF /* CoreData.framework */; }; + B364A26615DE1FC8005618BF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B364A26415DE1FC8005618BF /* InfoPlist.strings */; }; + B364A26915DE1FC8005618BF /* SFFileSharingTutorialTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B364A26815DE1FC8005618BF /* SFFileSharingTutorialTests.m */; }; + B364A27415DE1FF5005618BF /* SFFilesTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B364A27315DE1FF5005618BF /* SFFilesTableViewController.m */; }; + B364A27615DE292D005618BF /* test.jpg in Resources */ = {isa = PBXBuildFile; fileRef = B364A27515DE292D005618BF /* test.jpg */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B364A25F15DE1FC8005618BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B364A23015DE1FC7005618BF /* Project object */; + proxyType = 1; + remoteGlobalIDString = B364A23815DE1FC7005618BF; + remoteInfo = SFFileSharingTutorial; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + B364A23915DE1FC7005618BF /* SFFileSharingTutorial.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SFFileSharingTutorial.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B364A23D15DE1FC7005618BF /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + B364A23F15DE1FC7005618BF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B364A24115DE1FC7005618BF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + B364A24315DE1FC7005618BF /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + B364A24715DE1FC7005618BF /* SFFileSharingTutorial-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFFileSharingTutorial-Info.plist"; sourceTree = ""; }; + B364A24915DE1FC7005618BF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B364A24B15DE1FC7005618BF /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B364A24D15DE1FC7005618BF /* SFFileSharingTutorial-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SFFileSharingTutorial-Prefix.pch"; sourceTree = ""; }; + B364A24E15DE1FC7005618BF /* SFAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFAppDelegate.h; sourceTree = ""; }; + B364A24F15DE1FC7005618BF /* SFAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFAppDelegate.m; sourceTree = ""; }; + B364A25215DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = SFFileSharingTutorial.xcdatamodel; sourceTree = ""; }; + B364A25915DE1FC8005618BF /* SFFileSharingTutorialTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SFFileSharingTutorialTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + B364A25A15DE1FC8005618BF /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + B364A26315DE1FC8005618BF /* SFFileSharingTutorialTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SFFileSharingTutorialTests-Info.plist"; sourceTree = ""; }; + B364A26515DE1FC8005618BF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + B364A26715DE1FC8005618BF /* SFFileSharingTutorialTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SFFileSharingTutorialTests.h; sourceTree = ""; }; + B364A26815DE1FC8005618BF /* SFFileSharingTutorialTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SFFileSharingTutorialTests.m; sourceTree = ""; }; + B364A27215DE1FF5005618BF /* SFFilesTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SFFilesTableViewController.h; sourceTree = ""; }; + B364A27315DE1FF5005618BF /* SFFilesTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFFilesTableViewController.m; sourceTree = ""; }; + B364A27515DE292D005618BF /* test.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = test.jpg; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B364A23615DE1FC7005618BF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B364A23E15DE1FC7005618BF /* UIKit.framework in Frameworks */, + B364A24015DE1FC7005618BF /* Foundation.framework in Frameworks */, + B364A24215DE1FC7005618BF /* CoreGraphics.framework in Frameworks */, + B364A24415DE1FC7005618BF /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B364A25515DE1FC8005618BF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B364A25B15DE1FC8005618BF /* SenTestingKit.framework in Frameworks */, + B364A25C15DE1FC8005618BF /* UIKit.framework in Frameworks */, + B364A25D15DE1FC8005618BF /* Foundation.framework in Frameworks */, + B364A25E15DE1FC8005618BF /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B364A22E15DE1FC7005618BF = { + isa = PBXGroup; + children = ( + B364A27515DE292D005618BF /* test.jpg */, + B364A24515DE1FC7005618BF /* SFFileSharingTutorial */, + B364A26115DE1FC8005618BF /* SFFileSharingTutorialTests */, + B364A23C15DE1FC7005618BF /* Frameworks */, + B364A23A15DE1FC7005618BF /* Products */, + ); + sourceTree = ""; + }; + B364A23A15DE1FC7005618BF /* Products */ = { + isa = PBXGroup; + children = ( + B364A23915DE1FC7005618BF /* SFFileSharingTutorial.app */, + B364A25915DE1FC8005618BF /* SFFileSharingTutorialTests.octest */, + ); + name = Products; + sourceTree = ""; + }; + B364A23C15DE1FC7005618BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + B364A23D15DE1FC7005618BF /* UIKit.framework */, + B364A23F15DE1FC7005618BF /* Foundation.framework */, + B364A24115DE1FC7005618BF /* CoreGraphics.framework */, + B364A24315DE1FC7005618BF /* CoreData.framework */, + B364A25A15DE1FC8005618BF /* SenTestingKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B364A24515DE1FC7005618BF /* SFFileSharingTutorial */ = { + isa = PBXGroup; + children = ( + B364A24E15DE1FC7005618BF /* SFAppDelegate.h */, + B364A24F15DE1FC7005618BF /* SFAppDelegate.m */, + B364A25115DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodeld */, + B364A24615DE1FC7005618BF /* Supporting Files */, + B364A27215DE1FF5005618BF /* SFFilesTableViewController.h */, + B364A27315DE1FF5005618BF /* SFFilesTableViewController.m */, + ); + path = SFFileSharingTutorial; + sourceTree = ""; + }; + B364A24615DE1FC7005618BF /* Supporting Files */ = { + isa = PBXGroup; + children = ( + B364A24715DE1FC7005618BF /* SFFileSharingTutorial-Info.plist */, + B364A24815DE1FC7005618BF /* InfoPlist.strings */, + B364A24B15DE1FC7005618BF /* main.m */, + B364A24D15DE1FC7005618BF /* SFFileSharingTutorial-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + B364A26115DE1FC8005618BF /* SFFileSharingTutorialTests */ = { + isa = PBXGroup; + children = ( + B364A26715DE1FC8005618BF /* SFFileSharingTutorialTests.h */, + B364A26815DE1FC8005618BF /* SFFileSharingTutorialTests.m */, + B364A26215DE1FC8005618BF /* Supporting Files */, + ); + path = SFFileSharingTutorialTests; + sourceTree = ""; + }; + B364A26215DE1FC8005618BF /* Supporting Files */ = { + isa = PBXGroup; + children = ( + B364A26315DE1FC8005618BF /* SFFileSharingTutorialTests-Info.plist */, + B364A26415DE1FC8005618BF /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B364A23815DE1FC7005618BF /* SFFileSharingTutorial */ = { + isa = PBXNativeTarget; + buildConfigurationList = B364A26C15DE1FC8005618BF /* Build configuration list for PBXNativeTarget "SFFileSharingTutorial" */; + buildPhases = ( + B364A23515DE1FC7005618BF /* Sources */, + B364A23615DE1FC7005618BF /* Frameworks */, + B364A23715DE1FC7005618BF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SFFileSharingTutorial; + productName = SFFileSharingTutorial; + productReference = B364A23915DE1FC7005618BF /* SFFileSharingTutorial.app */; + productType = "com.apple.product-type.application"; + }; + B364A25815DE1FC8005618BF /* SFFileSharingTutorialTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B364A26F15DE1FC8005618BF /* Build configuration list for PBXNativeTarget "SFFileSharingTutorialTests" */; + buildPhases = ( + B364A25415DE1FC8005618BF /* Sources */, + B364A25515DE1FC8005618BF /* Frameworks */, + B364A25615DE1FC8005618BF /* Resources */, + B364A25715DE1FC8005618BF /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + B364A26015DE1FC8005618BF /* PBXTargetDependency */, + ); + name = SFFileSharingTutorialTests; + productName = SFFileSharingTutorialTests; + productReference = B364A25915DE1FC8005618BF /* SFFileSharingTutorialTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B364A23015DE1FC7005618BF /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = SF; + LastUpgradeCheck = 0440; + ORGANIZATIONNAME = saltfactory.net; + }; + buildConfigurationList = B364A23315DE1FC7005618BF /* Build configuration list for PBXProject "SFFileSharingTutorial" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = B364A22E15DE1FC7005618BF; + productRefGroup = B364A23A15DE1FC7005618BF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B364A23815DE1FC7005618BF /* SFFileSharingTutorial */, + B364A25815DE1FC8005618BF /* SFFileSharingTutorialTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B364A23715DE1FC7005618BF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B364A24A15DE1FC7005618BF /* InfoPlist.strings in Resources */, + B364A27615DE292D005618BF /* test.jpg in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B364A25615DE1FC8005618BF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B364A26615DE1FC8005618BF /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + B364A25715DE1FC8005618BF /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B364A23515DE1FC7005618BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B364A24C15DE1FC7005618BF /* main.m in Sources */, + B364A25015DE1FC7005618BF /* SFAppDelegate.m in Sources */, + B364A25315DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodeld in Sources */, + B364A27415DE1FF5005618BF /* SFFilesTableViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B364A25415DE1FC8005618BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B364A26915DE1FC8005618BF /* SFFileSharingTutorialTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B364A26015DE1FC8005618BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B364A23815DE1FC7005618BF /* SFFileSharingTutorial */; + targetProxy = B364A25F15DE1FC8005618BF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B364A24815DE1FC7005618BF /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B364A24915DE1FC7005618BF /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + B364A26415DE1FC8005618BF /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + B364A26515DE1FC8005618BF /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B364A26A15DE1FC8005618BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + SDKROOT = iphoneos; + }; + name = Debug; + }; + B364A26B15DE1FC8005618BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B364A26D15DE1FC8005618BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFFileSharingTutorial/SFFileSharingTutorial-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + B364A26E15DE1FC8005618BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFFileSharingTutorial/SFFileSharingTutorial-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + B364A27015DE1FC8005618BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SFFileSharingTutorial.app/SFFileSharingTutorial"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFFileSharingTutorialTests/SFFileSharingTutorialTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + B364A27115DE1FC8005618BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SFFileSharingTutorial.app/SFFileSharingTutorial"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch"; + INFOPLIST_FILE = "SFFileSharingTutorialTests/SFFileSharingTutorialTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B364A23315DE1FC7005618BF /* Build configuration list for PBXProject "SFFileSharingTutorial" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B364A26A15DE1FC8005618BF /* Debug */, + B364A26B15DE1FC8005618BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B364A26C15DE1FC8005618BF /* Build configuration list for PBXNativeTarget "SFFileSharingTutorial" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B364A26D15DE1FC8005618BF /* Debug */, + B364A26E15DE1FC8005618BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + B364A26F15DE1FC8005618BF /* Build configuration list for PBXNativeTarget "SFFileSharingTutorialTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B364A27015DE1FC8005618BF /* Debug */, + B364A27115DE1FC8005618BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + B364A25115DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + B364A25215DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodel */, + ); + currentVersion = B364A25215DE1FC7005618BF /* SFFileSharingTutorial.xcdatamodel */; + path = SFFileSharingTutorial.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = B364A23015DE1FC7005618BF /* Project object */; +} diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.h b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.h new file mode 100644 index 0000000..f4d874b --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.h @@ -0,0 +1,22 @@ +// +// SFAppDelegate.h +// SFFileSharingTutorial +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import + +@interface SFAppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; +@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; +@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; + +- (void)saveContext; +- (NSURL *)applicationDocumentsDirectory; + +@end diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.m b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.m new file mode 100644 index 0000000..e30c667 --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFAppDelegate.m @@ -0,0 +1,154 @@ +// +// SFAppDelegate.m +// SFFileSharingTutorial +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import "SFAppDelegate.h" +#import "SFFilesTableViewController.h" + +@implementation SFAppDelegate + +@synthesize managedObjectContext = _managedObjectContext; +@synthesize managedObjectModel = _managedObjectModel; +@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + // Override point for customization after application launch. + self.window.backgroundColor = [UIColor whiteColor]; + SFFilesTableViewController *filesTableViewController = [[SFFilesTableViewController alloc] init]; + UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:filesTableViewController]; + self.window.rootViewController = navigationController; + + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Saves changes in the application's managed object context before the application terminates. + [self saveContext]; +} + +- (void)saveContext +{ + NSError *error = nil; + NSManagedObjectContext *managedObjectContext = self.managedObjectContext; + if (managedObjectContext != nil) { + if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { + // Replace this implementation with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + } +} + +#pragma mark - Core Data stack + +// Returns the managed object context for the application. +// If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application. +- (NSManagedObjectContext *)managedObjectContext +{ + if (_managedObjectContext != nil) { + return _managedObjectContext; + } + + NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; + if (coordinator != nil) { + _managedObjectContext = [[NSManagedObjectContext alloc] init]; + [_managedObjectContext setPersistentStoreCoordinator:coordinator]; + } + return _managedObjectContext; +} + +// Returns the managed object model for the application. +// If the model doesn't already exist, it is created from the application's model. +- (NSManagedObjectModel *)managedObjectModel +{ + if (_managedObjectModel != nil) { + return _managedObjectModel; + } + NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"SFFileSharingTutorial" withExtension:@"momd"]; + _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; + return _managedObjectModel; +} + +// Returns the persistent store coordinator for the application. +// If the coordinator doesn't already exist, it is created and the application's store added to it. +- (NSPersistentStoreCoordinator *)persistentStoreCoordinator +{ + if (_persistentStoreCoordinator != nil) { + return _persistentStoreCoordinator; + } + + NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"SFFileSharingTutorial.sqlite"]; + + NSError *error = nil; + _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; + if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { + /* + Replace this implementation with code to handle the error appropriately. + + abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + Typical reasons for an error here include: + * The persistent store is not accessible; + * The schema for the persistent store is incompatible with current managed object model. + Check the error message to determine what the actual problem was. + + + If the persistent store is not accessible, there is typically something wrong with the file path. Often, a file URL is pointing into the application's resources directory instead of a writeable directory. + + If you encounter schema incompatibility errors during development, you can reduce their frequency by: + * Simply deleting the existing store: + [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil] + + * Performing automatic lightweight migration by passing the following dictionary as the options parameter: + @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES} + + Lightweight migration will only work for a limited set of schema changes; consult "Core Data Model Versioning and Data Migration Programming Guide" for details. + + */ + NSLog(@"Unresolved error %@, %@", error, [error userInfo]); + abort(); + } + + return _persistentStoreCoordinator; +} + +#pragma mark - Application's Documents directory + +// Returns the URL to the application's Documents directory. +- (NSURL *)applicationDocumentsDirectory +{ + return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; +} + +@end diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Info.plist b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Info.plist new file mode 100644 index 0000000..2e6c9cd --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Info.plist @@ -0,0 +1,40 @@ + + + + + UIFileSharingEnabled + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + net.saltfactory.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch new file mode 100644 index 0000000..58d8820 --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial-Prefix.pch @@ -0,0 +1,15 @@ +// +// Prefix header for all source files of the 'SFFileSharingTutorial' target in the 'SFFileSharingTutorial' project +// + +#import + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iOS SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import + #import +#endif diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/.xccurrentversion b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..11b2824 --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + SFFileSharingTutorial.xcdatamodel + + diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/SFFileSharingTutorial.xcdatamodel/contents b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/SFFileSharingTutorial.xcdatamodel/contents new file mode 100644 index 0000000..193f33c --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFileSharingTutorial.xcdatamodeld/SFFileSharingTutorial.xcdatamodel/contents @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.h b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.h new file mode 100644 index 0000000..b4ad01a --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.h @@ -0,0 +1,13 @@ +// +// SFFilesTableViewController.h +// SFFileSharingTutorial +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import + +@interface SFFilesTableViewController : UITableViewController + +@end diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.m b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.m new file mode 100644 index 0000000..6d0fa75 --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/SFFilesTableViewController.m @@ -0,0 +1,150 @@ +// +// SFFilesTableViewController.m +// SFFileSharingTutorial +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import "SFFilesTableViewController.h" + +@interface SFFilesTableViewController () +{ + NSMutableArray *items; +} +@end + +@implementation SFFilesTableViewController + +- (id)initWithStyle:(UITableViewStyle)style +{ + self = [super initWithStyle:style]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + self.title = @"공유파일목록"; + + NSString *documentPath = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0]; + NSFileManager *manager = [NSFileManager defaultManager]; + + NSError *error; + NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"]; + NSString *destinationPath = [documentPath stringByAppendingPathComponent:@"test.jpg"]; + + if([manager copyItemAtPath:sourcePath toPath:destinationPath error:&error]){ + NSLog(@"File successfully copied"); + } else { + NSLog(@"Error description-%@ \n", [error localizedDescription]); + NSLog(@"Error reason-%@", [error localizedFailureReason]); + } + + + NSArray *filenames = [manager contentsOfDirectoryAtPath:documentPath error:&error ]; + + if (error) { + NSLog(@"%@", [error localizedDescription]); + } else { + items = [NSMutableArray arrayWithArray:filenames]; + } +} + +- (void)viewDidUnload +{ + [super viewDidUnload]; + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + // Return the number of sections. + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + // Return the number of rows in the section. + return [items count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString *CellIdentifier = @"Cell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + + // Configure the cell... + if (cell == nil) + { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; + } + cell.textLabel.text = [items objectAtIndex:indexPath.row]; + return cell; +} + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; + } + else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath +{ +} +*/ + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + +#pragma mark - Table view delegate + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Navigation logic may go here. Create and push another view controller. + /* + <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; + // ... + // Pass the selected object to the new view controller. + [self.navigationController pushViewController:detailViewController animated:YES]; + */ +} + +@end diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/en.lproj/InfoPlist.strings b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorial/main.m b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/main.m new file mode 100644 index 0000000..03dcac5 --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorial/main.m @@ -0,0 +1,18 @@ +// +// main.m +// SFFileSharingTutorial +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import + +#import "SFAppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([SFAppDelegate class])); + } +} diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests-Info.plist b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests-Info.plist new file mode 100644 index 0000000..e64de06 --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + net.saltfactory.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.h b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.h new file mode 100644 index 0000000..123343b --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.h @@ -0,0 +1,13 @@ +// +// SFFileSharingTutorialTests.h +// SFFileSharingTutorialTests +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import + +@interface SFFileSharingTutorialTests : SenTestCase + +@end diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.m b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.m new file mode 100644 index 0000000..d2bb9cf --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/SFFileSharingTutorialTests.m @@ -0,0 +1,32 @@ +// +// SFFileSharingTutorialTests.m +// SFFileSharingTutorialTests +// +// Created by SungKwang Song on 8/17/12. +// Copyright (c) 2012 saltfactory.net. All rights reserved. +// + +#import "SFFileSharingTutorialTests.h" + +@implementation SFFileSharingTutorialTests + +- (void)setUp +{ + [super setUp]; + + // Set-up code here. +} + +- (void)tearDown +{ + // Tear-down code here. + + [super tearDown]; +} + +- (void)testExample +{ + STFail(@"Unit tests are not implemented yet in SFFileSharingTutorialTests"); +} + +@end diff --git a/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/en.lproj/InfoPlist.strings b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Projects/SFFileSharingTutorial/SFFileSharingTutorialTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Projects/SFFileSharingTutorial/test.jpg b/Projects/SFFileSharingTutorial/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41feca3f1a75b3adeea64223a7912dbe1ba0f10b GIT binary patch literal 30738 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 literal 0 HcmV?d00001 diff --git a/Workspaces/Saltfactory_iOS_Tutorial.xcworkspace/contents.xcworkspacedata b/Workspaces/Saltfactory_iOS_Tutorial.xcworkspace/contents.xcworkspacedata index 94b2795..6657656 100644 --- a/Workspaces/Saltfactory_iOS_Tutorial.xcworkspace/contents.xcworkspacedata +++ b/Workspaces/Saltfactory_iOS_Tutorial.xcworkspace/contents.xcworkspacedata @@ -1,4 +1,7 @@ + +