Shoose Our Own Story

main
Victor Perez NGOUNOU 2 years ago
parent cae193180c
commit 6c5f582df4

@ -7,7 +7,7 @@
<key>About Me.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
<integer>1</integer>
</dict>
</dict>
</dict>

@ -2,7 +2,7 @@
<Workspace
version = "1.0">
<FileRef
location = "group:/Users/etudiant/XCodeProjects/Story Data Model/Shoose Our Own Story.xcodeproj">
location = "group:Shoose Our Own Story/Shoose Our Own Story.xcodeproj">
</FileRef>
<FileRef
location = "group:About Me/About Me.xcodeproj">

@ -0,0 +1,614 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 56;
objects = {
/* Begin PBXBuildFile section */
EC0F97402A0ADEBE006AB760 /* Story_Data_ModelApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0F973F2A0ADEBE006AB760 /* Story_Data_ModelApp.swift */; };
EC0F97422A0ADEBE006AB760 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0F97412A0ADEBE006AB760 /* ContentView.swift */; };
EC0F97442A0ADEBF006AB760 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC0F97432A0ADEBF006AB760 /* Assets.xcassets */; };
EC0F97472A0ADEBF006AB760 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC0F97462A0ADEBF006AB760 /* Preview Assets.xcassets */; };
EC0F97512A0ADEBF006AB760 /* Shoose Our Own StoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0F97502A0ADEBF006AB760 /* Shoose Our Own StoryTests.swift */; };
EC0F975B2A0ADEBF006AB760 /* Shoose Our Own StoryUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0F975A2A0ADEBF006AB760 /* Shoose Our Own StoryUITests.swift */; };
EC0F975D2A0ADEBF006AB760 /* Shoose Our Own StoryUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0F975C2A0ADEBF006AB760 /* Shoose Our Own StoryUITestsLaunchTests.swift */; };
ECFE83242A0AE311009FBD9D /* StoryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFE83232A0AE311009FBD9D /* StoryModel.swift */; };
ECFE83272A0AE368009FBD9D /* MyStory.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFE83262A0AE368009FBD9D /* MyStory.swift */; };
ECFE83292A0AE3FC009FBD9D /* StoryPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFE83282A0AE3FC009FBD9D /* StoryPageView.swift */; };
ECFE832B2A0AEA8D009FBD9D /* StoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFE832A2A0AEA8D009FBD9D /* StoryView.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
EC0F974D2A0ADEBF006AB760 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = EC0F97342A0ADEBE006AB760 /* Project object */;
proxyType = 1;
remoteGlobalIDString = EC0F973B2A0ADEBE006AB760;
remoteInfo = "Story Data Model";
};
EC0F97572A0ADEBF006AB760 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = EC0F97342A0ADEBE006AB760 /* Project object */;
proxyType = 1;
remoteGlobalIDString = EC0F973B2A0ADEBE006AB760;
remoteInfo = "Story Data Model";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
EC0F973C2A0ADEBE006AB760 /* Shoose Our Own Story.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Shoose Our Own Story.app"; sourceTree = BUILT_PRODUCTS_DIR; };
EC0F973F2A0ADEBE006AB760 /* Story_Data_ModelApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Story_Data_ModelApp.swift; sourceTree = "<group>"; };
EC0F97412A0ADEBE006AB760 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
EC0F97432A0ADEBF006AB760 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
EC0F97462A0ADEBF006AB760 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
EC0F974C2A0ADEBF006AB760 /* Shoose Our Own StoryTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Shoose Our Own StoryTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
EC0F97502A0ADEBF006AB760 /* Shoose Our Own StoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Shoose Our Own StoryTests.swift"; sourceTree = "<group>"; };
EC0F97562A0ADEBF006AB760 /* Shoose Our Own StoryUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Shoose Our Own StoryUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
EC0F975A2A0ADEBF006AB760 /* Shoose Our Own StoryUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Shoose Our Own StoryUITests.swift"; sourceTree = "<group>"; };
EC0F975C2A0ADEBF006AB760 /* Shoose Our Own StoryUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Shoose Our Own StoryUITestsLaunchTests.swift"; sourceTree = "<group>"; };
ECFE83232A0AE311009FBD9D /* StoryModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryModel.swift; sourceTree = "<group>"; };
ECFE83262A0AE368009FBD9D /* MyStory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyStory.swift; sourceTree = "<group>"; };
ECFE83282A0AE3FC009FBD9D /* StoryPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryPageView.swift; sourceTree = "<group>"; };
ECFE832A2A0AEA8D009FBD9D /* StoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryView.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
EC0F97392A0ADEBE006AB760 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
EC0F97492A0ADEBF006AB760 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
EC0F97532A0ADEBF006AB760 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
EC0F97332A0ADEBE006AB760 = {
isa = PBXGroup;
children = (
EC0F973E2A0ADEBE006AB760 /* Shoose Our Own Story */,
EC0F974F2A0ADEBF006AB760 /* Shoose Our Own StoryTests */,
EC0F97592A0ADEBF006AB760 /* Shoose Our Own StoryUITests */,
EC0F973D2A0ADEBE006AB760 /* Products */,
);
sourceTree = "<group>";
};
EC0F973D2A0ADEBE006AB760 /* Products */ = {
isa = PBXGroup;
children = (
EC0F973C2A0ADEBE006AB760 /* Shoose Our Own Story.app */,
EC0F974C2A0ADEBF006AB760 /* Shoose Our Own StoryTests.xctest */,
EC0F97562A0ADEBF006AB760 /* Shoose Our Own StoryUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
EC0F973E2A0ADEBE006AB760 /* Shoose Our Own Story */ = {
isa = PBXGroup;
children = (
ECFE83252A0AE33A009FBD9D /* Views */,
ECFE83222A0AE2F7009FBD9D /* Models */,
EC0F973F2A0ADEBE006AB760 /* Story_Data_ModelApp.swift */,
EC0F97412A0ADEBE006AB760 /* ContentView.swift */,
EC0F97432A0ADEBF006AB760 /* Assets.xcassets */,
EC0F97452A0ADEBF006AB760 /* Preview Content */,
);
path = "Shoose Our Own Story";
sourceTree = "<group>";
};
EC0F97452A0ADEBF006AB760 /* Preview Content */ = {
isa = PBXGroup;
children = (
EC0F97462A0ADEBF006AB760 /* Preview Assets.xcassets */,
);
path = "Preview Content";
sourceTree = "<group>";
};
EC0F974F2A0ADEBF006AB760 /* Shoose Our Own StoryTests */ = {
isa = PBXGroup;
children = (
EC0F97502A0ADEBF006AB760 /* Shoose Our Own StoryTests.swift */,
);
path = "Shoose Our Own StoryTests";
sourceTree = "<group>";
};
EC0F97592A0ADEBF006AB760 /* Shoose Our Own StoryUITests */ = {
isa = PBXGroup;
children = (
EC0F975A2A0ADEBF006AB760 /* Shoose Our Own StoryUITests.swift */,
EC0F975C2A0ADEBF006AB760 /* Shoose Our Own StoryUITestsLaunchTests.swift */,
);
path = "Shoose Our Own StoryUITests";
sourceTree = "<group>";
};
ECFE83222A0AE2F7009FBD9D /* Models */ = {
isa = PBXGroup;
children = (
ECFE83232A0AE311009FBD9D /* StoryModel.swift */,
ECFE83262A0AE368009FBD9D /* MyStory.swift */,
);
path = Models;
sourceTree = "<group>";
};
ECFE83252A0AE33A009FBD9D /* Views */ = {
isa = PBXGroup;
children = (
ECFE83282A0AE3FC009FBD9D /* StoryPageView.swift */,
ECFE832A2A0AEA8D009FBD9D /* StoryView.swift */,
);
path = Views;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
EC0F973B2A0ADEBE006AB760 /* Shoose Our Own Story */ = {
isa = PBXNativeTarget;
buildConfigurationList = EC0F97602A0ADEBF006AB760 /* Build configuration list for PBXNativeTarget "Shoose Our Own Story" */;
buildPhases = (
EC0F97382A0ADEBE006AB760 /* Sources */,
EC0F97392A0ADEBE006AB760 /* Frameworks */,
EC0F973A2A0ADEBE006AB760 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "Shoose Our Own Story";
productName = "Story Data Model";
productReference = EC0F973C2A0ADEBE006AB760 /* Shoose Our Own Story.app */;
productType = "com.apple.product-type.application";
};
EC0F974B2A0ADEBF006AB760 /* Shoose Our Own StoryTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = EC0F97632A0ADEBF006AB760 /* Build configuration list for PBXNativeTarget "Shoose Our Own StoryTests" */;
buildPhases = (
EC0F97482A0ADEBF006AB760 /* Sources */,
EC0F97492A0ADEBF006AB760 /* Frameworks */,
EC0F974A2A0ADEBF006AB760 /* Resources */,
);
buildRules = (
);
dependencies = (
EC0F974E2A0ADEBF006AB760 /* PBXTargetDependency */,
);
name = "Shoose Our Own StoryTests";
productName = "Story Data ModelTests";
productReference = EC0F974C2A0ADEBF006AB760 /* Shoose Our Own StoryTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
EC0F97552A0ADEBF006AB760 /* Shoose Our Own StoryUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = EC0F97662A0ADEBF006AB760 /* Build configuration list for PBXNativeTarget "Shoose Our Own StoryUITests" */;
buildPhases = (
EC0F97522A0ADEBF006AB760 /* Sources */,
EC0F97532A0ADEBF006AB760 /* Frameworks */,
EC0F97542A0ADEBF006AB760 /* Resources */,
);
buildRules = (
);
dependencies = (
EC0F97582A0ADEBF006AB760 /* PBXTargetDependency */,
);
name = "Shoose Our Own StoryUITests";
productName = "Story Data ModelUITests";
productReference = EC0F97562A0ADEBF006AB760 /* Shoose Our Own StoryUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
EC0F97342A0ADEBE006AB760 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1410;
LastUpgradeCheck = 1410;
TargetAttributes = {
EC0F973B2A0ADEBE006AB760 = {
CreatedOnToolsVersion = 14.1;
};
EC0F974B2A0ADEBF006AB760 = {
CreatedOnToolsVersion = 14.1;
TestTargetID = EC0F973B2A0ADEBE006AB760;
};
EC0F97552A0ADEBF006AB760 = {
CreatedOnToolsVersion = 14.1;
TestTargetID = EC0F973B2A0ADEBE006AB760;
};
};
};
buildConfigurationList = EC0F97372A0ADEBE006AB760 /* Build configuration list for PBXProject "Shoose Our Own Story" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = EC0F97332A0ADEBE006AB760;
productRefGroup = EC0F973D2A0ADEBE006AB760 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
EC0F973B2A0ADEBE006AB760 /* Shoose Our Own Story */,
EC0F974B2A0ADEBF006AB760 /* Shoose Our Own StoryTests */,
EC0F97552A0ADEBF006AB760 /* Shoose Our Own StoryUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
EC0F973A2A0ADEBE006AB760 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
EC0F97472A0ADEBF006AB760 /* Preview Assets.xcassets in Resources */,
EC0F97442A0ADEBF006AB760 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
EC0F974A2A0ADEBF006AB760 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
EC0F97542A0ADEBF006AB760 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
EC0F97382A0ADEBE006AB760 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
ECFE832B2A0AEA8D009FBD9D /* StoryView.swift in Sources */,
EC0F97422A0ADEBE006AB760 /* ContentView.swift in Sources */,
ECFE83292A0AE3FC009FBD9D /* StoryPageView.swift in Sources */,
EC0F97402A0ADEBE006AB760 /* Story_Data_ModelApp.swift in Sources */,
ECFE83242A0AE311009FBD9D /* StoryModel.swift in Sources */,
ECFE83272A0AE368009FBD9D /* MyStory.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
EC0F97482A0ADEBF006AB760 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
EC0F97512A0ADEBF006AB760 /* Shoose Our Own StoryTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
EC0F97522A0ADEBF006AB760 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
EC0F975D2A0ADEBF006AB760 /* Shoose Our Own StoryUITestsLaunchTests.swift in Sources */,
EC0F975B2A0ADEBF006AB760 /* Shoose Our Own StoryUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
EC0F974E2A0ADEBF006AB760 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = EC0F973B2A0ADEBE006AB760 /* Shoose Our Own Story */;
targetProxy = EC0F974D2A0ADEBF006AB760 /* PBXContainerItemProxy */;
};
EC0F97582A0ADEBF006AB760 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = EC0F973B2A0ADEBE006AB760 /* Shoose Our Own Story */;
targetProxy = EC0F97572A0ADEBF006AB760 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
EC0F975E2A0ADEBF006AB760 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
EC0F975F2A0ADEBF006AB760 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.1;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
EC0F97612A0ADEBF006AB760 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"Shoose Our Own Story/Preview Content\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.Story-Data-Model";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
EC0F97622A0ADEBF006AB760 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"Story Data Model/Preview Content\"";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.Story-Data-Model";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
EC0F97642A0ADEBF006AB760 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.1;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.Story-Data-ModelTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Shoose Our Own Story.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Shoose Our Own Story";
};
name = Debug;
};
EC0F97652A0ADEBF006AB760 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.1;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.Story-Data-ModelTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Shoose Our Own Story.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Shoose Our Own Story";
};
name = Release;
};
EC0F97672A0ADEBF006AB760 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.Story-Data-ModelUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "Story Data Model";
};
name = Debug;
};
EC0F97682A0ADEBF006AB760 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.Story-Data-ModelUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "Story Data Model";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
EC0F97372A0ADEBE006AB760 /* Build configuration list for PBXProject "Shoose Our Own Story" */ = {
isa = XCConfigurationList;
buildConfigurations = (
EC0F975E2A0ADEBF006AB760 /* Debug */,
EC0F975F2A0ADEBF006AB760 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
EC0F97602A0ADEBF006AB760 /* Build configuration list for PBXNativeTarget "Shoose Our Own Story" */ = {
isa = XCConfigurationList;
buildConfigurations = (
EC0F97612A0ADEBF006AB760 /* Debug */,
EC0F97622A0ADEBF006AB760 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
EC0F97632A0ADEBF006AB760 /* Build configuration list for PBXNativeTarget "Shoose Our Own StoryTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
EC0F97642A0ADEBF006AB760 /* Debug */,
EC0F97652A0ADEBF006AB760 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
EC0F97662A0ADEBF006AB760 /* Build configuration list for PBXNativeTarget "Shoose Our Own StoryUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
EC0F97672A0ADEBF006AB760 /* Debug */,
EC0F97682A0ADEBF006AB760 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = EC0F97342A0ADEBE006AB760 /* Project object */;
}

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,13 @@
{
"images" : [
{
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,26 @@
//
// ContentView.swift
// Story Data Model
//
// Created by etudiant on 09/05/2023.
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

@ -0,0 +1,204 @@
//
// MyStory.swift
// Story Data Model
//
// Created by etudiant on 09/05/2023.
//
import SwiftUI
let story = Story(pages: [
StoryPage( // 0
"""
Welcome to Choose Your Own Story
🥖🍪Bake Off!🥐🍰
You enter a local baking competition at the county fair 🎪. Its a beautiful summer day and you are excited! When you enter the room, you look around to see ten identical stations.
Each station is stocked with bowls of different sizes, spatulas, spoons, and a standing mixer. You are the third to arrive, so there are many stations still available. Where do you sit?
""",
choices: [
Choice(text: "Front row!", destination: 1),
Choice(text: "Find somewhere in the middle", destination: 1),
Choice(text: "Back of the room", destination: 2),
]
),
StoryPage( // 1
"""
Luckily, some nice people fill in around you and wave politely. The directions sounds fun! Make a sponge cake you would have wanted as a child for your birthday, focusing on the decorations and theme. The top three bakers will win a cash prize. You start with a theme.
""",
choices: [
Choice(text: "Trains", destination: 3),
Choice(text: "Castles", destination: 5),
Choice(text: "Rainbows", destination: 6),
Choice(text: "Woodland creatures", destination: 5),
Choice(text: "Outer space", destination: 3),
]
),
StoryPage( // 2
"""
Oh no. There is a very loud person next to you. You can barely hear the directions in the back of the room. You think they said something about a birthday cake. Luckily, the person in front of you whispers a brief review of what they said...glazing over a few things. A birthday cake I would have wanted as a kid. Hmm? You think back to your favorite cake.
""",
choices: [
Choice(text: "Chocolate", destination: 4),
Choice(text: "Red velvet", destination: 4),
Choice(text: "Vanilla confetti", destination: 5),
Choice(text: "Strawberry shortcake", destination: 3),
]
),
StoryPage( // 3
"""
Great choice! Now you just need to make the sponge cake and start thinking about the toppings. You scan the selection on the table and start planning your toppings. In addition to all the colorful icing, you choose...
""",
choices: [
Choice(text: "Sprinkles", destination: 8),
Choice(text: "Berries", destination: 7),
Choice(text: "Chocolate", destination: 9),
]
),
StoryPage( // 4
"""
Okay, you seem to be in the clear. Everyone else is busy working on their cakes and you are too...only their cakes all look the same. You shrug it off thinking your cake is going to be unique and special. The judges come over and ask you whats going to go on top of your cake. You tell them:
""",
choices: [
Choice(text: "Piped buttercream frosting", destination: 13),
Choice(text: "Fondant icing", destination: 7),
]
),
StoryPage( // 5
"""
The judges come around to ask you about your cake. You are so excited to tell them about your toppings, which include:
""",
choices: [
Choice(text: "Marzipan figurines", destination: 12),
Choice(text: "Fondant figurines", destination: 14),
]
),
StoryPage( // 6
"""
The judges come around to ask you what you are planning. You tell them all about your rainbow-themed cake. One of the things you tell them is:
""",
choices: [
Choice(text: "Its in the shape of a rainbow.", destination: 15),
Choice(text: "It has multicolored candies on the outside.", destination: 10),
Choice(text: "It has marshmallow clouds.", destination: 11),
]
),
StoryPage( // 7
"""
There is so much available to decorate with; your cake keeps getting better and better. You notice some of your neighbors are using some decorations you didnt see on the table. What do you do?
""",
choices: [
Choice(text: "Pop over to your neighbors bench and ask where they got their toppings.", destination: 16),
Choice(text: "Keep working away, your cake will be great even without the specialty item.", destination: 20),
]
),
StoryPage( // 8
"""
You are running out of time, so you put your cake in the freezer to speed things up. You check it after ten minutes. What do you do?
""",
choices: [
Choice(text: "Pipe the decorations onto parchment paper. You can transfer them at the last minute.", destination: 17),
Choice(text: "Start decorating, you dont have a minute to waste.", destination: 18),
]
),
StoryPage( // 9
"""
You are feeling good about your timing and start creating your design. You want your theme to come to life, so you decide to upgrade your flat design to become 3D. You head over to the table of supplies and grab:
""",
choices: [
Choice(text: "Marzipan, and lots of it!", destination: 19),
Choice(text: "Several bags of different color icing.", destination: 20),
]
),
StoryPage( // 10
"""
When you head to the decorations table to get some candy, you find red, orange, yellow, green, and purple candies, but no blue or indigo! Someone making a troll cake has used all the blue-colored candies. You come in a respectable 4th place, despite your five color rainbow.
😢 Try again.
""",
choices: []
),
StoryPage( // 11
"""
The judges say you overbaked your cake and your marshmallow clouds fall flat. You come in 7th place.
😢 Try again.
""",
choices: []
),
StoryPage( // 12
"""
Now that the judges have moved on, you are able to get going on your decorations. You start by making all the marzipan figurines. Things are looking pretty good until...you SNEEZE! 🤧🦠 The spray goes everywhere and you have to restart your decorations. In the end, you run out of time and come in 8th place.
😢 Try again.
""",
choices: []
),
StoryPage( // 13
"""
The judges come by to ask about your cake. They keep prying for more, and cant understand why you are only using piped icing. After a short time, you realize you have missed a HUGE part of the directions. You complete the challenge and go home in last place.
😢 Try again.
""",
choices: []
),
StoryPage( // 14
"""
Your cake is coming together nicely when a dog bursts into the tent! He runs through, toppling over a tray of your piped decorations. You run out of time to remake them and come in 9th place.
😢 Try again.
""",
choices: []
),
StoryPage( // 15
"""
Your rainbow turns out magnificent! The arch is sky high and it impresses the judges. You win 2nd place.🥈
🎉💵You are a cash prize winner!💵🥳
""",
choices: []
),
StoryPage( // 16
"""
Right before you get to your neighbors bench, you trip on a power cord and knock over their sponge cake! There is no time for them to start over. They are devastated and you decide to disqualify yourself out of solidarity.
😢 Try again.
""",
choices: []
),
StoryPage( // 17
"""
Good thinking! You can complete most of your decorations while your cake continues to cool. You work hard and, before you know it, the competition is over and your cake looks spectacular. You come in 3rd place!🥉
🎉💵You are a cash prize winner!💵🥳
""",
choices: []
),
StoryPage( // 18
"""
Oh no, you should have waited! All your frosting melts off the sides and your decorations are a disaster. Luckily your cake perfectly baked. The judges are pretty harsh about your decorations and you finish in 6th place.
😢 Try again.
""",
choices: []
),
StoryPage( // 19
"""
The judges love your theme and the 3D elements really make it come alive! They compliment you on your mix of chocolate and marzipan. You win 1st place! 🎉🎂🥇
🎉💵You are a cash prize winner!💵🥳
""",
choices: []
),
StoryPage( // 20
"""
The judges compliment your theme, but the icing is too thick and overpowers the delicate cake. You come in 5th place.
😢 Try again.
""",
choices: []
),
])

@ -0,0 +1,33 @@
//
// StoryModel.swift
// Story Data Model
//
// Created by etudiant on 09/05/2023.
//
import Foundation
struct Story {
let pages: [StoryPage]
subscript(_ pageIndex: Int) -> StoryPage {
return pages[pageIndex]
}
}
struct StoryPage {
let text: String
let choices: [Choice]
init(_ text: String, choices: [Choice]) {
self.text = text
self.choices = choices
}
}
struct Choice {
let text: String
let destination: Int
}

@ -0,0 +1,17 @@
//
// Story_Data_ModelApp.swift
// Story Data Model
//
// Created by etudiant on 09/05/2023.
//
import SwiftUI
@main
struct Story_Data_ModelApp: App {
var body: some Scene {
WindowGroup {
StoryView()
}
}
}

@ -0,0 +1,41 @@
//
// StoryPageView.swift
// Story Data Model
//
// Created by etudiant on 09/05/2023.
//
import SwiftUI
struct StoryPageView: View {
let story:Story
let pageIndex:Int
var body: some View {
VStack{
ScrollView{
Text(story[pageIndex].text)
}
ForEach(story[pageIndex].choices, id: \Choice.text){
choise in
NavigationLink(destination: StoryPageView(story: story, pageIndex: choise.destination)){
Text(choise.text)
.multilineTextAlignment(.leading)
.frame(maxWidth: .infinity,alignment: .leading)
.padding()
.background(Color.gray.opacity(0.25))
.cornerRadius(10)
}
}
}
.padding()
.navigationTitle("Page \(pageIndex + 1)")
.navigationBarTitleDisplayMode(.inline)
}
}
struct StoryPageView_Previews: PreviewProvider {
static var previews: some View {
StoryPageView(story: story, pageIndex: 0)
}
}

@ -0,0 +1,22 @@
//
// StoryView.swift
// Story Data Model
//
// Created by etudiant on 09/05/2023.
//
import SwiftUI
struct StoryView: View {
var body: some View {
NavigationStack{
StoryPageView(story: story, pageIndex: 0)
}
}
}
struct StoryView_Previews: PreviewProvider {
static var previews: some View {
StoryView()
}
}

@ -0,0 +1,36 @@
//
// Story_Data_ModelTests.swift
// Story Data ModelTests
//
// Created by etudiant on 09/05/2023.
//
import XCTest
@testable import Story_Data_Model
final class Story_Data_ModelTests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
// Any test you write for XCTest can be annotated as throws and async.
// Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
// Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}

@ -0,0 +1,41 @@
//
// Story_Data_ModelUITests.swift
// Story Data ModelUITests
//
// Created by etudiant on 09/05/2023.
//
import XCTest
final class Story_Data_ModelUITests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// In UI tests its important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication()
app.launch()
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testLaunchPerformance() throws {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTApplicationLaunchMetric()]) {
XCUIApplication().launch()
}
}
}
}

@ -0,0 +1,32 @@
//
// Story_Data_ModelUITestsLaunchTests.swift
// Story Data ModelUITests
//
// Created by etudiant on 09/05/2023.
//
import XCTest
final class Story_Data_ModelUITestsLaunchTests: XCTestCase {
override class var runsForEachTargetApplicationUIConfiguration: Bool {
true
}
override func setUpWithError() throws {
continueAfterFailure = false
}
func testLaunch() throws {
let app = XCUIApplication()
app.launch()
// Insert steps here to perform after app launch but before taking a screenshot,
// such as logging into a test account or navigating somewhere in the app
let attachment = XCTAttachment(screenshot: app.screenshot())
attachment.name = "Launch Screen"
attachment.lifetime = .keepAlways
add(attachment)
}
}
Loading…
Cancel
Save