[Framework] Feed framework setup #2

Merged
javier merged 3 commits from framework/feed/setup into main 2024-03-16 00:29:00 +00:00
8 changed files with 277 additions and 20 deletions

View File

@ -6,6 +6,7 @@
// Copyright © 2020 ING. All rights reserved.
//
import ReviewsFeed
import UIKit
@UIApplicationMain

View File

@ -0,0 +1,17 @@
//
// ReviewsFeed.h
// Feed
//
// Created by Javier Cicchelli on 16/03/2024.
// Copyright © 2024 Röck+Cöde. All rights reserved.
//
#import <Foundation/Foundation.h>
//! Project version number for Feed.
FOUNDATION_EXPORT double FeedVersionNumber;
//! Project version string for Feed.
FOUNDATION_EXPORT const unsigned char FeedVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <Feed/PublicHeader.h>

View File

@ -8,25 +8,33 @@
import UIKit
class FeedViewController: UITableViewController {
public class FeedViewController: UITableViewController {
override func viewDidLoad() {
public init() {
super.init(style: .plain)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public override func viewDidLoad() {
super.viewDidLoad()
tableView.register(ReviewCell.self, forCellReuseIdentifier: "cellId")
tableView.rowHeight = 160
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
public override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 100
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let c = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! ReviewCell
c.update(item: randomReview())
return c
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
public override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let vc = DetailsViewController(review: randomReview())
navigationController!.pushViewController(vc, animated: true)

View File

@ -7,16 +7,45 @@
objects = {
/* Begin PBXBuildFile section */
02DC7F9F2BA51793000EEEBE /* ReviewsFeed.h in Headers */ = {isa = PBXBuildFile; fileRef = 02DC7F912BA51793000EEEBE /* ReviewsFeed.h */; settings = {ATTRIBUTES = (Public, ); }; };
02DC7FA22BA51793000EEEBE /* ReviewsFeed.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */; };
02DC7FA32BA51793000EEEBE /* ReviewsFeed.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
02DC7FAC2BA51B4C000EEEBE /* DetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD13224C6EE64004E2EE1 /* DetailsViewController.swift */; };
02DC7FAD2BA51B4C000EEEBE /* ReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD13024C6EE64004E2EE1 /* ReviewCell.swift */; };
02DC7FAE2BA51B4C000EEEBE /* FeedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD12F24C6EE64004E2EE1 /* FeedViewController.swift */; };
02DC7FAF2BA51B4C000EEEBE /* Review.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD13124C6EE64004E2EE1 /* Review.swift */; };
345AD11C24C6EDD9004E2EE1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD11B24C6EDD9004E2EE1 /* AppDelegate.swift */; };
345AD12524C6EDDC004E2EE1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 345AD12424C6EDDC004E2EE1 /* Assets.xcassets */; };
345AD12824C6EDDC004E2EE1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 345AD12624C6EDDC004E2EE1 /* LaunchScreen.storyboard */; };
345AD13324C6EE64004E2EE1 /* FeedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD12F24C6EE64004E2EE1 /* FeedViewController.swift */; };
345AD13424C6EE64004E2EE1 /* ReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD13024C6EE64004E2EE1 /* ReviewCell.swift */; };
345AD13524C6EE64004E2EE1 /* Review.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD13124C6EE64004E2EE1 /* Review.swift */; };
345AD13624C6EE64004E2EE1 /* DetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 345AD13224C6EE64004E2EE1 /* DetailsViewController.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
02DC7FA02BA51793000EEEBE /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 345AD11024C6EDD9004E2EE1 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 02DC7F8E2BA51793000EEEBE;
remoteInfo = Feed;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
02DC7FA42BA51793000EEEBE /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
02DC7FA32BA51793000EEEBE /* ReviewsFeed.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ReviewsFeed.framework; sourceTree = BUILT_PRODUCTS_DIR; };
02DC7F912BA51793000EEEBE /* ReviewsFeed.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReviewsFeed.h; sourceTree = "<group>"; };
345AD11824C6EDD9004E2EE1 /* Reviews.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Reviews.app; sourceTree = BUILT_PRODUCTS_DIR; };
345AD11B24C6EDD9004E2EE1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
345AD12424C6EDDC004E2EE1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@ -29,10 +58,18 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
02DC7F8C2BA51793000EEEBE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
345AD11524C6EDD9004E2EE1 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
02DC7FA22BA51793000EEEBE /* ReviewsFeed.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -60,10 +97,6 @@
02DC7F742BA4F93B000EEEBE /* Sources */ = {
isa = PBXGroup;
children = (
345AD13224C6EE64004E2EE1 /* DetailsViewController.swift */,
345AD12F24C6EE64004E2EE1 /* FeedViewController.swift */,
345AD13124C6EE64004E2EE1 /* Review.swift */,
345AD13024C6EE64004E2EE1 /* ReviewCell.swift */,
345AD11B24C6EDD9004E2EE1 /* AppDelegate.swift */,
);
path = Sources;
@ -85,9 +118,38 @@
path = Catalogs;
sourceTree = "<group>";
};
02DC7F902BA51793000EEEBE /* Feed */ = {
isa = PBXGroup;
children = (
02DC7F912BA51793000EEEBE /* ReviewsFeed.h */,
02DC7FB02BA51B4F000EEEBE /* Sources */,
);
path = Feed;
sourceTree = "<group>";
};
02DC7FAB2BA51848000EEEBE /* Frameworks */ = {
isa = PBXGroup;
children = (
02DC7F902BA51793000EEEBE /* Feed */,
);
path = Frameworks;
sourceTree = "<group>";
};
02DC7FB02BA51B4F000EEEBE /* Sources */ = {
isa = PBXGroup;
children = (
345AD13224C6EE64004E2EE1 /* DetailsViewController.swift */,
345AD12F24C6EE64004E2EE1 /* FeedViewController.swift */,
345AD13124C6EE64004E2EE1 /* Review.swift */,
345AD13024C6EE64004E2EE1 /* ReviewCell.swift */,
);
path = Sources;
sourceTree = "<group>";
};
345AD10F24C6EDD9004E2EE1 = {
isa = PBXGroup;
children = (
02DC7FAB2BA51848000EEEBE /* Frameworks */,
345AD11A24C6EDD9004E2EE1 /* App */,
345AD11924C6EDD9004E2EE1 /* Products */,
);
@ -97,6 +159,7 @@
isa = PBXGroup;
children = (
345AD11824C6EDD9004E2EE1 /* Reviews.app */,
02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */,
);
name = Products;
sourceTree = "<group>";
@ -112,7 +175,36 @@
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
02DC7F8A2BA51793000EEEBE /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
02DC7F9F2BA51793000EEEBE /* ReviewsFeed.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
02DC7F8E2BA51793000EEEBE /* Feed */ = {
isa = PBXNativeTarget;
buildConfigurationList = 02DC7FA92BA51793000EEEBE /* Build configuration list for PBXNativeTarget "Feed" */;
buildPhases = (
02DC7F8A2BA51793000EEEBE /* Headers */,
02DC7F8B2BA51793000EEEBE /* Sources */,
02DC7F8C2BA51793000EEEBE /* Frameworks */,
02DC7F8D2BA51793000EEEBE /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = Feed;
productName = Feed;
productReference = 02DC7F8F2BA51793000EEEBE /* ReviewsFeed.framework */;
productType = "com.apple.product-type.framework";
};
345AD11724C6EDD9004E2EE1 /* App */ = {
isa = PBXNativeTarget;
buildConfigurationList = 345AD12C24C6EDDC004E2EE1 /* Build configuration list for PBXNativeTarget "App" */;
@ -120,10 +212,12 @@
345AD11424C6EDD9004E2EE1 /* Sources */,
345AD11524C6EDD9004E2EE1 /* Frameworks */,
345AD11624C6EDD9004E2EE1 /* Resources */,
02DC7FA42BA51793000EEEBE /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
02DC7FA12BA51793000EEEBE /* PBXTargetDependency */,
);
name = App;
productName = AppStoreReviews;
@ -136,10 +230,14 @@
345AD11024C6EDD9004E2EE1 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1160;
LastUpgradeCheck = 1160;
BuildIndependentTargetsInParallel = YES;
LastSwiftUpdateCheck = 1530;
LastUpgradeCheck = 1530;
ORGANIZATIONNAME = "Röck+Cöde";
TargetAttributes = {
02DC7F8E2BA51793000EEEBE = {
CreatedOnToolsVersion = 15.3;
};
345AD11724C6EDD9004E2EE1 = {
CreatedOnToolsVersion = 11.6;
};
@ -158,12 +256,20 @@
projectDirPath = "";
projectRoot = "";
targets = (
02DC7F8E2BA51793000EEEBE /* Feed */,
345AD11724C6EDD9004E2EE1 /* App */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
02DC7F8D2BA51793000EEEBE /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
345AD11624C6EDD9004E2EE1 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@ -176,20 +282,35 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
02DC7F8B2BA51793000EEEBE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
02DC7FAC2BA51B4C000EEEBE /* DetailsViewController.swift in Sources */,
02DC7FAF2BA51B4C000EEEBE /* Review.swift in Sources */,
02DC7FAE2BA51B4C000EEEBE /* FeedViewController.swift in Sources */,
02DC7FAD2BA51B4C000EEEBE /* ReviewCell.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
345AD11424C6EDD9004E2EE1 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
345AD13524C6EE64004E2EE1 /* Review.swift in Sources */,
345AD13424C6EE64004E2EE1 /* ReviewCell.swift in Sources */,
345AD13324C6EE64004E2EE1 /* FeedViewController.swift in Sources */,
345AD11C24C6EDD9004E2EE1 /* AppDelegate.swift in Sources */,
345AD13624C6EE64004E2EE1 /* DetailsViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
02DC7FA12BA51793000EEEBE /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 02DC7F8E2BA51793000EEEBE /* Feed */;
targetProxy = 02DC7FA02BA51793000EEEBE /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
345AD12624C6EDDC004E2EE1 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
@ -202,6 +323,103 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
02DC7FA52BA51793000EEEBE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 7FMNM89WKG;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_MODULE_VERIFIER = YES;
ENABLE_PREVIEWS = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Röck+Cöde. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.ing.framework.feed";
PRODUCT_NAME = ReviewsFeed;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_INSTALL_OBJC_HEADER = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
02DC7FA62BA51793000EEEBE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 7FMNM89WKG;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_MODULE_VERIFIER = YES;
ENABLE_PREVIEWS = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Röck+Cöde. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20";
PRODUCT_BUNDLE_IDENTIFIER = "com.rock-n-code.assignment.ing.framework.feed";
PRODUCT_NAME = ReviewsFeed;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_INSTALL_OBJC_HEADER = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
345AD12A24C6EDDC004E2EE1 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -228,6 +446,7 @@
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;
@ -288,6 +507,7 @@
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;
@ -319,6 +539,7 @@
345AD12D24C6EDDC004E2EE1 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@ -347,6 +568,7 @@
345AD12E24C6EDDC004E2EE1 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@ -375,6 +597,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
02DC7FA92BA51793000EEEBE /* Build configuration list for PBXNativeTarget "Feed" */ = {
isa = XCConfigurationList;
buildConfigurations = (
02DC7FA52BA51793000EEEBE /* Debug */,
02DC7FA62BA51793000EEEBE /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
345AD11324C6EDD9004E2EE1 /* Build configuration list for PBXProject "Reviews" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "self:AppStoreReviews.xcodeproj">
location = "self:">
</FileRef>
</Workspace>