diff --git a/.gitignore b/.gitignore index a6ec9217..fd0cbd90 100644 --- a/.gitignore +++ b/.gitignore @@ -34,8 +34,8 @@ xcuserdata/ # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control # -# Pods/ -# Podfile.lock +Pods/ +Podfile.lock # Carthage # diff --git a/LLDebugTool.podspec b/LLDebugTool.podspec index 1182373b..eaba75f3 100644 --- a/LLDebugTool.podspec +++ b/LLDebugTool.podspec @@ -98,6 +98,8 @@ Pod::Spec.new do |s| ss.frameworks = "CoreLocation", "MapKit" ss.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'LLDEBUGTOOL_LOCATION=1'} ss.dependency "LLDebugTool/Core" + ss.dependency "MapxusBaseSDK", "~> 6.8.0" + ss.dependency "MapxusMapSDK", "~> 6.8.0" end s.subspec 'ShortCut' do |ss| diff --git a/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.h b/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.h index 63f4b1d8..0f3e0063 100644 --- a/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.h +++ b/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.h @@ -31,6 +31,27 @@ NS_ASSUME_NONNULL_BEGIN /// Whether is mock @property (nonatomic, assign, getter=LL_isMock) BOOL LL_mock; + +/// This property holds the floor information. +/// +/// @discussion +/// Because `CLLocation.floor` does not have a defined setter method, you can change the value when you get `CLLocation.floor` using this property. +/// If it is set to nil, `CLLocation.floor` will return the original value when the getter method is called. +@property (nonatomic, strong, nullable) CLFloor *myLLFloor; + ++ (CLLocation *)createLocationWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude level:(NSInteger)level; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface CLFloor (Factory) + ++ (CLFloor *)createFloorWihtLevel:(NSInteger)level; + @end NS_ASSUME_NONNULL_END diff --git a/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.m b/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.m index e8a9f79e..28020b49 100644 --- a/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.m +++ b/LLDebugTool/Core/Component/Location/Function/CLLocation/CLLocation+LL_Location.m @@ -27,6 +27,50 @@ @implementation CLLocation (LL_Location) ++ (void)load +{ + static dispatch_once_t mxmOnceToken; + dispatch_once(&mxmOnceToken, ^{ + SEL oldSelector = @selector(floor); + SEL newSelector = @selector(hook_getLLFloor); + Method oldMethod = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([self class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([self class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod)); + } else { + method_exchangeImplementations(oldMethod, newMethod); + } + }); +} + ++ (CLLocation *)createLocationWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude level:(NSInteger)level { + CLLocation *mockLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; + CLFloor *floor = [CLFloor createFloorWihtLevel:level]; + mockLocation.myLLFloor = floor; + mockLocation.LL_mock = YES; + return mockLocation; +} + +- (CLFloor *)hook_getLLFloor +{ + if (self.myLLFloor) { + return self.myLLFloor; + } else { + return [self hook_getLLFloor]; + } +} + +- (CLFloor *)myLLFloor { + return objc_getAssociatedObject(self, @selector(myLLFloor)); +} + +- (void)setMyLLFloor:(CLFloor *)myLLFloor { + objc_setAssociatedObject(self, @selector(myLLFloor), myLLFloor, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + - (void)setLL_mock:(BOOL)LL_mock { objc_setAssociatedObject(self, @selector(LL_isMock), @(LL_mock), OBJC_ASSOCIATION_RETAIN_NONATOMIC); } @@ -36,3 +80,14 @@ - (BOOL)LL_isMock { } @end + +@implementation CLFloor (Factory) + ++ (CLFloor *)createFloorWihtLevel:(NSInteger)level +{ + CLFloor *floor = [[CLFloor alloc] init]; + [floor setValue:@(level) forKey:@"level"]; + return floor; +} + +@end diff --git a/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.h b/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.h index 2a1c47e8..14adb4d1 100644 --- a/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.h +++ b/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.h @@ -22,6 +22,7 @@ // SOFTWARE. #import +#import @class LLLocationProxy; @@ -41,3 +42,14 @@ FOUNDATION_EXPORT NSNotificationName const LLCLLocationUnRegisterNotificationNam @end NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface MGLPointAnnotation (LL_PointAnnotation) + ++ (MGLPointAnnotation *)pointAnnotation:(CLLocationCoordinate2D)coordinate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.m b/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.m index 9dac0895..d70f437c 100644 --- a/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.m +++ b/LLDebugTool/Core/Component/Location/Function/CLLocationManager/CLLocationManager+LL_Location.m @@ -22,9 +22,7 @@ // SOFTWARE. #import "CLLocationManager+LL_Location.h" - #import "LLLocationProxy.h" - #import "NSObject+LL_Runtime.h" NSNotificationName const LLCLLocationRegisterNotificationName = @"LLCLLocationRegisterNotificationName"; @@ -103,3 +101,13 @@ - (BOOL)LL_isUpdatingLocation { } @end + +@implementation MGLPointAnnotation (LL_PointAnnotation) + ++ (MGLPointAnnotation *)pointAnnotation:(CLLocationCoordinate2D)coordinate { + MGLPointAnnotation *point = [[MGLPointAnnotation alloc] init]; + point.coordinate = coordinate; + point.title = [NSString stringWithFormat:@"%0.6f, %0.6f", coordinate.latitude, coordinate.longitude]; + return point; +} +@end diff --git a/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.h b/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.h index 12029fbb..ba9caabf 100644 --- a/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.h +++ b/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.h @@ -23,6 +23,9 @@ #import +double toRadians(double degrees); +double toDegrees(double radians); + @class LLLocationMockRouteModel; NS_ASSUME_NONNULL_BEGIN @@ -93,6 +96,25 @@ NS_ASSUME_NONNULL_BEGIN */ + (BOOL)addLLDebugToolExtendDataWithPath:(NSString *)path; + +/// <#Description#> +/// - Parameters: +/// - point: <#point description#> +/// - distance: <#distance description#> +/// - angle: <#angle description#> ++ (CLLocation *)pointFromPoint:(CLLocationCoordinate2D)point distance:(double)distance angle:(double)angle; + +@end + +NS_ASSUME_NONNULL_END + +NS_ASSUME_NONNULL_BEGIN + +@interface NSNumber (Radians) + ++ (CGFloat)toRadians:(CGFloat)degrees; + @end + NS_ASSUME_NONNULL_END diff --git a/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.m b/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.m index 89912716..ac744438 100644 --- a/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.m +++ b/LLDebugTool/Core/Component/Location/Function/LLLocationHelper.m @@ -34,6 +34,14 @@ #import "CLLocationManager+LL_Location.h" #import "CLLocation+LL_Location.h" +double toRadians(double degrees) { + return degrees * M_PI / 180.0; +} + +double toDegrees(double radians) { + return radians * 180.0 / M_PI; +} + static LLLocationHelper *_instance = nil; static pthread_mutex_t mutex_t = PTHREAD_MUTEX_INITIALIZER; @@ -141,7 +149,6 @@ - (NSString *)stopRecordRoute { } NSMutableDictionary *json = [[NSMutableDictionary alloc] init]; json[@"key"] = @"LLDebugTool"; -// NSMutableArray *data = [[NSMutableArray alloc] init]; for (CLLocation *location in self.locations) { NSMutableDictionary *locationJson = [[NSMutableDictionary alloc] init]; locationJson[@"lng"] = [LLFormatterTool formatLocation:@(location.coordinate.longitude)]; @@ -193,6 +200,29 @@ + (BOOL)addLLDebugToolExtendDataWithPath:(NSString *)path { return YES; } +/// <#Description#> +/// - Parameters: +/// - point: <#point description#> +/// - distance: <#distance description#> +/// - angle: <#angle description#> ++ (CLLocation *)pointFromPoint:(CLLocationCoordinate2D)point distance:(double)distance angle:(double)angle { + double lati1 = point.latitude; + double long1 = point.longitude; + + double R = 6378137.0; // 球半径 + double sinLat = sin(toRadians(lati1)); + double cosLat = cos(toRadians(lati1)); + double cosDistR = cos(distance / R); + double sinDistR = sin(distance / R); + double lat2 = asin(sinLat * cosDistR + cosLat * sinDistR * cos(toRadians(angle))); + double lon2 = toRadians(long1) + atan2(sin(toRadians(angle)) * sinDistR * cosLat, cosDistR - sinLat * sin(lat2)); + + lon2 = toDegrees(lon2); + lon2 = lon2 > 180 ? lon2 - 360 : lon2 < -180 ? lon2 + 360 : lon2; + lat2 = toDegrees(lat2); + return [[CLLocation alloc] initWithLatitude:lat2 longitude:lon2]; +} + #pragma mark - Life cycle - (instancetype)init { if (self = [super init]) { @@ -336,3 +366,12 @@ - (CLLocationManager *)locationManager { } @end + + +@implementation NSNumber (Radians) + ++ (CGFloat)toRadians:(CGFloat)degrees { + return degrees * M_PI / 180.0; +} + +@end diff --git a/LLDebugTool/Core/Component/Location/Function/LLLocationMockRouteModel.m b/LLDebugTool/Core/Component/Location/Function/LLLocationMockRouteModel.m index 800ba700..4152703d 100644 --- a/LLDebugTool/Core/Component/Location/Function/LLLocationMockRouteModel.m +++ b/LLDebugTool/Core/Component/Location/Function/LLLocationMockRouteModel.m @@ -132,13 +132,17 @@ - (void)analysisJsonFile:(NSString *)filePath { if (dic[@"lat"] && dic[@"lng"]) { CLLocationDegrees lat = [dic[@"lat"] doubleValue]; CLLocationDegrees lng = [dic[@"lng"] doubleValue]; + NSInteger level = [dic[@"lng"] intValue]; + CLFloor *floor = [CLFloor createFloorWihtLevel:level]; + CLLocation *location = [[CLLocation alloc] initWithLatitude:lat longitude:lng]; + location.myLLFloor = floor; location.LL_mock = YES; [locations addObject:location]; } } } - + NSLog(@"*** jsonData = %@", jsonData); _locations = [locations copy]; _isAvailable = YES; } diff --git a/LLDebugTool/Core/Component/Location/Function/LLLocationProxy.m b/LLDebugTool/Core/Component/Location/Function/LLLocationProxy.m index e401a5f9..5c7af09d 100644 --- a/LLDebugTool/Core/Component/Location/Function/LLLocationProxy.m +++ b/LLDebugTool/Core/Component/Location/Function/LLLocationProxy.m @@ -39,7 +39,9 @@ - (BOOL)respondsToSelector:(SEL)aSelector { #pragma mark - CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { - if ([self.target respondsToSelector:_cmd]) { + BOOL responds = [self.target respondsToSelector:_cmd]; +// NSLog(@"*** target = %@",self.target); + if (responds) { if ([LLLocationHelper shared].isMockRoute) { CLLocation *location = [locations firstObject]; // Mocking route. @@ -49,12 +51,12 @@ - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray } } else if ([LLLocationHelper shared].enable) { // Mock location. - CLLocation *mockLocation = [[CLLocation alloc] initWithLatitude:[LLConfig shared].mockLocationLatitude longitude:[LLConfig shared].mockLocationLongitude]; - mockLocation.LL_mock = YES; + CLLocation *mockLocation = [CLLocation createLocationWithLatitude:[LLConfig shared].mockLocationLatitude longitude:[LLConfig shared].mockLocationLongitude level:[LLConfig shared].mockLocationLevel]; locations = @[mockLocation]; } [self.target locationManager:manager didUpdateLocations:locations]; + [manager requestWhenInUseAuthorization]; } } diff --git a/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.h b/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.h index 74398ffd..d1a4c819 100644 --- a/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.h +++ b/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.h @@ -22,10 +22,11 @@ // SOFTWARE. #import +#import NS_ASSUME_NONNULL_BEGIN -@interface MKMapView (LL_Location) +@interface MGLMapView (MGL_Location) @end diff --git a/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.m b/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.m index 28d5f2c9..85857068 100644 --- a/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.m +++ b/LLDebugTool/Core/Component/Location/Function/MKMapView/MKMapView+LL_Location.m @@ -21,22 +21,89 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +#import #import "MKMapView+LL_Location.h" +#import "NSObject+LL_Runtime.h" +#import "LLSettingManager.h" #import "LLLocationHelper.h" +#import "LLLocationProxy.h" #import "LLConfig.h" -#import "NSObject+LL_Runtime.h" +@interface MGLMapView () + +@property (nonatomic, strong) UILongPressGestureRecognizer *longPressGestureRecognizer; +@property (nonatomic, strong) dispatch_source_t longPressTimer; + +@property (nonatomic, strong) CLLocationManager *methodLocationManager; +@property (nonatomic, assign) CLHeading *currentHeading; +@property (nonatomic, strong) LLLocationProxy *proxy; -@implementation MKMapView (LL_Location) +@end + +@implementation MGLMapView (MGL_Location) + (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [self LL_swizzleInstanceMethodWithOriginSel:NSSelectorFromString(@"_updateUserLocationViewWithLocation:hadUserLocation:") swizzledSel:@selector(LL_updateUserLocationViewWithLocation:hadUserLocation:)]; + + [self LL_swizzleInstanceMethodWithOriginSel:@selector(initWithFrame:) swizzledSel:@selector(LL_initWithFrame:)]; + [self LL_swizzleInstanceMethodWithOriginSel:@selector(initWithCoder:) swizzledSel:@selector(LL_initWithCoder:)]; + //locationManager + SEL oldSelector = @selector(userLocation); + SEL newSelector = @selector(hook_myLLUserLocation); + Method oldMethod = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([self class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([self class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod)); + } else { + method_exchangeImplementations(oldMethod, newMethod); + } }); } +- (MGLUserLocation *)hook_myLLUserLocation +{ + if (self.myLLUserLocation) { + return self.myLLUserLocation; + } else { + return [self hook_myLLUserLocation]; + } +} + +- (MGLUserLocation *)myLLUserLocation { + return objc_getAssociatedObject(self, @selector(myLLUserLocation)); +} + +- (void)setMyLLUserLocation:(MGLUserLocation *)myLLUserLocation { + objc_setAssociatedObject(self, @selector(myLLUserLocation), myLLUserLocation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + ++ (void)LL_swizzleInstanceMethodWithOriginSel:(SEL)oriSel swizzledSel:(SEL)swiSel { + Method originalMethod = class_getInstanceMethod(self, oriSel); + Method swizzledMethod = class_getInstanceMethod(self, swiSel); + method_exchangeImplementations(originalMethod, swizzledMethod); +} + +- (instancetype)LL_initWithFrame:(CGRect)frame { + MGLMapView *mapView = [self LL_initWithFrame:frame]; + [mapView addLongPressGestureRecognizer]; + [mapView setupLocationManager]; +// [mapView.locationManager startUpdatingLocation] + return mapView; +} + +- (instancetype)LL_initWithCoder:(NSCoder *)coder { + MGLMapView *mapView = [self LL_initWithCoder:coder]; + [mapView addLongPressGestureRecognizer]; + [mapView setupLocationManager]; + return mapView; +} + - (void)LL_updateUserLocationViewWithLocation:(CLLocation *)location hadUserLocation:(BOOL)hadUserLocation { if ([LLLocationHelper shared].enable) { location = [[CLLocation alloc] initWithLatitude:[LLConfig shared].mockLocationLatitude longitude:[LLConfig shared].mockLocationLongitude]; @@ -44,4 +111,118 @@ - (void)LL_updateUserLocationViewWithLocation:(CLLocation *)location hadUserLoca [self LL_updateUserLocationViewWithLocation:location hadUserLocation:hadUserLocation]; } +// Setup CLLocationManager for heading updates +- (void)setupLocationManager { + if (!self.methodLocationManager) { + self.methodLocationManager = [[CLLocationManager alloc] init]; + self.methodLocationManager.delegate = self; + self.methodLocationManager.headingFilter = 10.0; + [self.methodLocationManager startUpdatingHeading]; + self.proxy = [[LLLocationProxy alloc] initWithTarget:self]; + } +} + +// Override setter for locationManager +- (void)setMethodLocationManager:(CLLocationManager *)locationManager { + objc_setAssociatedObject(self, @selector(locationManager), locationManager, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +// Getter for locationManager +- (CLLocationManager *)methodLocationManager { + return objc_getAssociatedObject(self, @selector(locationManager)); +} + +- (void)setProxy:(LLLocationProxy *)proxy { + objc_setAssociatedObject(self, @selector(proxy), proxy, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (LLLocationProxy *)proxy { + return objc_getAssociatedObject(self, @selector(proxy)); +} + +// Override setter for currentHeading +- (void)setCurrentHeading:(CLHeading *)currentHeading { + objc_setAssociatedObject(self, @selector(currentHeading), currentHeading, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +// Getter for currentHeading +- (CLHeading *)currentHeading { + return objc_getAssociatedObject(self, @selector(currentHeading)); +} + +// Override setter for longPressGestureRecognizer +- (void)setLongPressGestureRecognizer:(UILongPressGestureRecognizer *)longPressGestureRecognizer { + objc_setAssociatedObject(self, @selector(longPressGestureRecognizer), longPressGestureRecognizer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +// Getter for longPressGestureRecognizer +- (UILongPressGestureRecognizer *)longPressGestureRecognizer { + return objc_getAssociatedObject(self, @selector(longPressGestureRecognizer)); +} + +// Override setter for longPressTimer +- (void)setLongPressTimer:(dispatch_source_t)longPressTimer { + objc_setAssociatedObject(self, @selector(longPressTimer), longPressTimer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +// Getter for longPressTimer +- (dispatch_source_t)longPressTimer { + return objc_getAssociatedObject(self, @selector(longPressTimer)); +} + +// Adding the long press gesture recognizer +- (void)addLongPressGestureRecognizer { + if (!self.longPressGestureRecognizer) { + self.longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; + [self addGestureRecognizer:self.longPressGestureRecognizer]; + } +} + +- (void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer +{ + if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { + [self startLongPressTimer]; + } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded || gestureRecognizer.state == UIGestureRecognizerStateCancelled) { + [self stopLongPressTimer]; + } +} + +- (void)startLongPressTimer { + if (!self.longPressTimer) { + dispatch_queue_t queue = dispatch_get_main_queue(); + self.longPressTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.longPressTimer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.1 * NSEC_PER_SEC); + dispatch_source_set_event_handler(self.longPressTimer, ^{ + [self longPressTimerFired]; + }); + dispatch_resume(self.longPressTimer); + } +} + +- (void)stopLongPressTimer { + if (self.longPressTimer) { + dispatch_source_cancel(self.longPressTimer); + self.longPressTimer = nil; + } +} + +- (void)longPressTimerFired +{ + // You can perform additional actions here. + if ([LLLocationHelper shared].enable) { + CLLocationCoordinate2D mockCoordinate = CLLocationCoordinate2DMake([LLConfig shared].mockLocationLatitude, [LLConfig shared].mockLocationLongitude); + CLLocation *tmpLocation = [LLLocationHelper pointFromPoint:mockCoordinate distance:1 angle:self.currentHeading.trueHeading]; + [LLConfig shared].mockLocationLatitude = tmpLocation.coordinate.latitude; + [LLConfig shared].mockLocationLongitude = tmpLocation.coordinate.longitude; + [self.proxy locationManager:self.methodLocationManager didUpdateLocations:@[tmpLocation]]; + + [self.locationManager startUpdatingLocation]; + } +} + +// CLLocationManagerDelegate method to update heading +- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { + self.currentHeading = newHeading; +} + @end diff --git a/LLDebugTool/Core/Component/Location/Function/MKMapView/MapxusMap+Map_Location.h b/LLDebugTool/Core/Component/Location/Function/MKMapView/MapxusMap+Map_Location.h new file mode 100644 index 00000000..e0a312f6 --- /dev/null +++ b/LLDebugTool/Core/Component/Location/Function/MKMapView/MapxusMap+Map_Location.h @@ -0,0 +1,17 @@ +// +// MapxusMap+Map_Location.h +// LLDebugToolDemo +// +// Created by Mapxus on 2024/7/16. +// Copyright © 2024 li. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MapxusMap (Map_Location) + +@end + +NS_ASSUME_NONNULL_END diff --git a/LLDebugTool/Core/Component/Location/Function/MKMapView/MapxusMap+Map_Location.m b/LLDebugTool/Core/Component/Location/Function/MKMapView/MapxusMap+Map_Location.m new file mode 100644 index 00000000..5818fba4 --- /dev/null +++ b/LLDebugTool/Core/Component/Location/Function/MKMapView/MapxusMap+Map_Location.m @@ -0,0 +1,227 @@ +// +// MapxusMap+Map_Location.m +// LLDebugToolDemo +// +// Created by Mapxus on 2024/7/16. +// Copyright © 2024 li. All rights reserved. +// + +#import "MapxusMap+Map_Location.h" +#import "NSObject+LL_Runtime.h" +#import "LLSettingManager.h" +#import "LLLocationHelper.h" +#import "LLLocationProxy.h" +#import "LLConfig.h" +#import "CLLocationManager+LL_Location.h" + + +@interface MapxusMap () + +@property (nonatomic, strong) CLLocationManager *methodLocationManager; +@property (nonatomic, strong) LLLocationProxy *mapxusMapProxy; + +@end + +@implementation MapxusMap (Map_Location) + ++ (void)load { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + SEL oldSelector = @selector(setDelegate:); + SEL newSelector = @selector(hook_setDelegate:); + Method oldMethod = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([self class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([self class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod)); + } else { + method_exchangeImplementations(oldMethod, newMethod); + } + + [self LL_swizzleInstanceMethodWithOriginSel:NSSelectorFromString(@"_updateUserLocationViewWithLocation:hadUserLocation:") swizzledSel:@selector(LL_updateUserLocationViewWithLocation:hadUserLocation:)]; + }); +} + +- (void)LL_updateUserLocationViewWithLocation:(CLLocation *)location hadUserLocation:(BOOL)hadUserLocation { + if ([LLLocationHelper shared].enable) { + location = [[CLLocation alloc] initWithLatitude:[LLConfig shared].mockLocationLatitude longitude:[LLConfig shared].mockLocationLongitude]; + } + [self LL_updateUserLocationViewWithLocation:location hadUserLocation:hadUserLocation]; +} + +// Setup CLLocationManager for heading updates +- (void)setupLocationManager { + if (!self.methodLocationManager) { + self.methodLocationManager = [[CLLocationManager alloc] init]; + self.methodLocationManager.delegate = self; +// self.mapxusMapProxy = [[LLLocationProxy alloc] initWithTarget:self]; + } +} + +// Override setter for locationManager +- (void)setMethodLocationManager:(CLLocationManager *)locationManager { + objc_setAssociatedObject(self, @selector(locationManager), locationManager, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +// Getter for locationManager +- (CLLocationManager *)methodLocationManager { + return objc_getAssociatedObject(self, @selector(locationManager)); +} + +- (void)setMapxusMapProxy:(LLLocationProxy *)mapxusMapProxy { + objc_setAssociatedObject(self, @selector(mapxusMapProxy), mapxusMapProxy, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (LLLocationProxy *)mapxusMapProxy { + return objc_getAssociatedObject(self, @selector(mapxusMapProxy)); +} + +- (void)hook_setDelegate:(id)delegate +{ + [self exchangeDidSingleTapOnPOIWithDelegate:delegate]; + [self exchangeDidSingleTapOnBlackWithDelegate:delegate]; + [self exchangeDidSingleAtCoordinateWithDelegate:delegate]; + [self exchangeDidSingleAtCoordinateWithDelegate:delegate]; + [self exchangeDidChangeSelectedFloorWithDelegate:delegate]; + [self hook_setDelegate:delegate]; + [self setupLocationManager]; +} + +- (void)exchangeDidSingleTapOnPOIWithDelegate:(id)delegate { + SEL oldSelector = @selector(map:didSingleTapOnPOI:atCoordinate:atSite:); + SEL newSelector = @selector(hook_map:didSingleTapOnPOI:atCoordinate:atSite:); + Method oldMethod_del = class_getInstanceMethod([delegate class], oldSelector); + Method oldMethod_self = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([delegate class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod_self)); + } else { + // 若已实现代理方法,则添加 hook 方法并进行交换 + BOOL isVictory = class_addMethod([delegate class], newSelector, class_getMethodImplementation([delegate class], oldSelector), method_getTypeEncoding(oldMethod_del)); + if (isVictory) { + class_replaceMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + } + } +} + +- (void)exchangeDidSingleTapOnBlackWithDelegate:(id)delegate { + SEL oldSelector = @selector(map:didSingleTapOnBlank:atSite:); + SEL newSelector = @selector(hook_map:didSingleTapOnBlank:atSite:); + Method oldMethod_del = class_getInstanceMethod([delegate class], oldSelector); + Method oldMethod_self = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([delegate class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod_self)); + } else { + // 若已实现代理方法,则添加 hook 方法并进行交换 + BOOL isVictory = class_addMethod([delegate class], newSelector, class_getMethodImplementation([delegate class], oldSelector), method_getTypeEncoding(oldMethod_del)); + if (isVictory) { + class_replaceMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + } + } +} + +- (void)exchangeDidSingleAtCoordinateWithDelegate:(id)delegate { + SEL oldSelector = @selector(map:didSingleTapAtCoordinate:); + SEL newSelector = @selector(hook_map:didSingleTapAtCoordinate:); + Method oldMethod_del = class_getInstanceMethod([delegate class], oldSelector); + Method oldMethod_self = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([delegate class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod_self)); + } else { + // 若已实现代理方法,则添加 hook 方法并进行交换 + BOOL isVictory = class_addMethod([delegate class], newSelector, class_getMethodImplementation([delegate class], oldSelector), method_getTypeEncoding(oldMethod_del)); + if (isVictory) { + class_replaceMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + } + } +} + +- (void)exchangeDidChangeSelectedFloorWithDelegate:(id)delegate +{ + SEL oldSelector = @selector(map:didChangeSelectedFloor:inSelectedBuildingId:atSelectedVenueId:); + SEL newSelector = @selector(hook_map:didChangeSelectedFloor:inSelectedBuildingId:atSelectedVenueId:); + Method oldMethod_del = class_getInstanceMethod([delegate class], oldSelector); + Method oldMethod_self = class_getInstanceMethod([self class], oldSelector); + Method newMethod = class_getInstanceMethod([self class], newSelector); + + // 若未实现代理方法,则先添加代理方法 + BOOL isSuccess = class_addMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + if (isSuccess) { + class_replaceMethod([delegate class], newSelector, class_getMethodImplementation([self class], oldSelector), method_getTypeEncoding(oldMethod_self)); + } else { + // 若已实现代理方法,则添加 hook 方法并进行交换 + BOOL isVictory = class_addMethod([delegate class], newSelector, class_getMethodImplementation([delegate class], oldSelector), method_getTypeEncoding(oldMethod_del)); + if (isVictory) { + class_replaceMethod([delegate class], oldSelector, class_getMethodImplementation([self class], newSelector), method_getTypeEncoding(newMethod)); + } + } +} + +- (void)hook_map:(MapxusMap *)map didSingleTapOnPOI:(MXMGeoPOI *)poi atCoordinate:(CLLocationCoordinate2D)coordinate atSite:(nullable MXMSite *)site { + [map setUpMockCoordinate:coordinate level:site.floor.ordinal.level]; + [self hook_map:map didSingleTapOnPOI:poi atCoordinate:coordinate atSite:site]; +} + +- (void)map:(MapxusMap *)map didSingleTapOnPOI:(MXMGeoPOI *)poi atCoordinate:(CLLocationCoordinate2D)coordinate atSite:(nullable MXMSite *)site { +} + + +- (void)hook_map:(MapxusMap *)map didSingleTapAtCoordinate:(CLLocationCoordinate2D)coordinate +{ + [map setUpMockCoordinate:coordinate level:0]; + [self hook_map:map didSingleTapAtCoordinate:coordinate]; +} + +- (void)map:(MapxusMap *)map didSingleTapAtCoordinate:(CLLocationCoordinate2D)coordinate { +} + + +- (void)hook_map:(MapxusMap *)map didSingleTapOnBlank:(CLLocationCoordinate2D)coordinate atSite:(nullable MXMSite *)site { + [map setUpMockCoordinate:coordinate level:site.floor.ordinal.level]; + [self hook_map:map didSingleTapOnBlank:coordinate atSite:site]; +} + +- (void)map:(MapxusMap *)map didSingleTapOnBlank:(CLLocationCoordinate2D)coordinate atSite:(nullable MXMSite *)site { +} + + +- (void)hook_map:(MapxusMap *)map didChangeSelectedFloor:(nullable MXMFloor *)floor inSelectedBuildingId:(nullable NSString *)buildingId atSelectedVenueId:(nullable NSString *)venueId { + [self hook_map:map didChangeSelectedFloor:floor inSelectedBuildingId:buildingId atSelectedVenueId:venueId]; +} + +- (void)map:(MapxusMap *)map didChangeSelectedFloor:(nullable MXMFloor *)floor inSelectedBuildingId:(nullable NSString *)buildingId atSelectedVenueId:(nullable NSString *)venueId { +} + +- (void)setUpMockCoordinate:(CLLocationCoordinate2D)coordinate level:(NSInteger)level { + if ([LLLocationHelper shared].enable) { + [LLConfig shared].mockLocationLatitude = coordinate.latitude; + [LLConfig shared].mockLocationLongitude = coordinate.longitude; + [LLSettingManager shared].mockLocationLatitude = @(coordinate.latitude); + [LLSettingManager shared].mockLocationLongitude = @(coordinate.longitude); + + [LLConfig shared].mockLocationLevel = level; + [LLSettingManager shared].mockLocationLevel = level; + + CLLocationCoordinate2D mockCoordinate = CLLocationCoordinate2DMake([LLConfig shared].mockLocationLatitude, [LLConfig shared].mockLocationLongitude); + CLLocation *tmpLocation = [[CLLocation alloc] initWithLatitude:mockCoordinate.latitude longitude:mockCoordinate.longitude]; + + [self.methodLocationManager.LL_delegateProxy locationManager:self.methodLocationManager didUpdateLocations:@[tmpLocation]]; + } +} + +- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { +} +@end diff --git a/LLDebugTool/Core/Component/Location/UserInterface/LLAnnotation.h b/LLDebugTool/Core/Component/Location/UserInterface/LLAnnotation.h index 11228cdc..1e1653bc 100644 --- a/LLDebugTool/Core/Component/Location/UserInterface/LLAnnotation.h +++ b/LLDebugTool/Core/Component/Location/UserInterface/LLAnnotation.h @@ -21,11 +21,12 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#import +//#import +#import NS_ASSUME_NONNULL_BEGIN -@interface LLAnnotation : NSObject +@interface LLAnnotation : NSObject /// coordinate @property (nonatomic, assign) CLLocationCoordinate2D coordinate; diff --git a/LLDebugTool/Core/Component/Location/UserInterface/LLLocationViewController.m b/LLDebugTool/Core/Component/Location/UserInterface/LLLocationViewController.m index 4294595b..3476bc39 100644 --- a/LLDebugTool/Core/Component/Location/UserInterface/LLLocationViewController.m +++ b/LLDebugTool/Core/Component/Location/UserInterface/LLLocationViewController.m @@ -24,6 +24,7 @@ #import "LLLocationViewController.h" #import +#import #import "LLDetailTitleSelectorCellView.h" #import "LLLocationMockRouteModel.h" @@ -38,12 +39,14 @@ #import "LLConfig.h" #import "LLConst.h" -#import "UIViewController+LL_Utils.h" #import "UIView+LL_Utils.h" +#import "CLLocation+LL_Location.h" +#import "UIViewController+LL_Utils.h" +#import "CLLocationManager+LL_Location.h" static NSString *const kAnnotationID = @"AnnotationID"; -@interface LLLocationViewController () +@interface LLLocationViewController () @property (nonatomic, strong) LLTitleSwitchCellView *mockLocationSwitch; @@ -59,9 +62,13 @@ @interface LLLocationViewController () *annotations; @property (nonatomic, strong) CLLocationManager *locationManager; @@ -72,6 +79,8 @@ @interface LLLocationViewController () *routeRecordings; +@property (nonatomic, strong) NSMutableArray *pointAnnotations; @end @@ -82,6 +91,7 @@ - (void)viewDidLoad { [super viewDidLoad]; self.title = LLLocalizedString(@"function.location"); self.view.backgroundColor = [LLThemeManager shared].backgroundColor; + self.mapViewZoomLevel = 16; [self.view addSubview:self.mockLocationSwitch]; [self.view addSubview:self.locationDescriptView]; @@ -89,7 +99,13 @@ - (void)viewDidLoad { [self.view addSubview:self.mockRouteSwitch]; [self.view addSubview:self.routeDescriptView]; [self.view addSubview:self.recordRouteSwitch]; - [self.view addSubview:self.mapView]; + [self.view addSubview:self.mapVView]; + + MXMConfiguration *configuration = [[MXMConfiguration alloc] init]; + self.mapxusMap = [[MapxusMap alloc] initWithMapView:self.mapVView configuration:configuration]; + self.mapxusMap.delegate = self; + [self.mapxusMap setMapStyleWithName:@"drop_in_ui_v2"]; + self.mapxusMap.collapseCopyright = YES; [self addMockLocationSwitchConstraints]; [self addLocationDescriptViewConstraints]; @@ -97,7 +113,10 @@ - (void)viewDidLoad { [self addMockRouteSwitchConstraints]; [self addRouteDescriptViewConstraints]; [self addRecordRouteSwitchConstraints]; - [self loadData]; + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self loadData]; + }); } - (void)viewWillDisappear:(BOOL)animated { @@ -108,23 +127,26 @@ - (void)viewWillDisappear:(BOOL)animated { #pragma mark - Over write - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; - self.mapView.frame = CGRectMake(0, self.addressDescriptView.LL_bottom + kLLGeneralMargin, LL_SCREEN_WIDTH, LL_SCREEN_HEIGHT - self.addressDescriptView.LL_bottom - kLLGeneralMargin); + self.mapVView.frame = CGRectMake(0, self.addressDescriptView.LL_bottom + kLLGeneralMargin, LL_SCREEN_WIDTH, LL_SCREEN_HEIGHT - self.addressDescriptView.LL_bottom - kLLGeneralMargin); } -#pragma mark - MKMapViewDelegate -- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState { - if (oldState == MKAnnotationViewDragStateEnding && newState == MKAnnotationViewDragStateNone) { - id annotation = view.annotation; - if (![annotation isKindOfClass:[LLAnnotation class]]) { - return; - } - if (CLLocationCoordinate2DIsValid(annotation.coordinate)) { - [self setUpCoordinate:annotation.coordinate automicSetRegion:YES placemark:nil]; +#pragma mark MGLMapViewDelegate +- (void)mapView:(MGLMapView *)mapView didAddAnnotationViews:(NSArray *)annotationViews { + for (MGLAnnotationView *annotationView in annotationViews) { + if ([annotationView isKindOfClass:[LLPinAnnotationView class]]) { + // Do something with your custom annotation view + //NSLog(@"*** Added custom annotation view with frame: %@", NSStringFromCGRect(annotationView.frame)); } } } -- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation { +- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id)annotation +{ + return YES; +} + +- (MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id)annotation +{ if ([annotation isKindOfClass:[LLAnnotation class]]) { LLPinAnnotationView *annotationView = (LLPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:kAnnotationID]; if (!annotationView) { @@ -136,74 +158,53 @@ - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id *)locations { CLLocation *location = [locations firstObject]; if (location) { [manager stopUpdatingLocation]; - [self setUpCoordinate:location.coordinate automicSetRegion:YES placemark:nil]; + [self setUpCoordinate:location.coordinate automicSetRegion:YES placemark:nil level:0]; } } -#pragma mark - Primary -- (void)addMockLocationSwitchConstraints { - NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.mockLocationSwitch attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch.superview attribute:NSLayoutAttributeTop multiplier:1 constant:LL_NAVIGATION_HEIGHT]; - NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.mockLocationSwitch attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; - NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.mockLocationSwitch attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; - self.mockLocationSwitch.translatesAutoresizingMaskIntoConstraints = NO; - [self.mockLocationSwitch.superview addConstraints:@[top, left, right]]; -} - -- (void)addLocationDescriptViewConstraints { - NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.locationDescriptView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; - NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.locationDescriptView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.locationDescriptView.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; - NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.locationDescriptView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.locationDescriptView.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; - self.locationDescriptView.translatesAutoresizingMaskIntoConstraints = NO; - [self.locationDescriptView.superview addConstraints:@[top, left, right]]; -} - -- (void)addAddressDescriptViewConstraints { - NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.addressDescriptView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.locationDescriptView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; - NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.addressDescriptView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.addressDescriptView.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; - NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.addressDescriptView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.addressDescriptView.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; - self.addressDescriptView.translatesAutoresizingMaskIntoConstraints = NO; - [self.addressDescriptView.superview addConstraints:@[top, left, right]]; -} - -- (void)addMockRouteSwitchConstraints { - NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.mockRouteSwitch attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.addressDescriptView attribute:NSLayoutAttributeBottom multiplier:1 constant:kLLGeneralMargin]; - NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.mockRouteSwitch attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.mockRouteSwitch.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; - NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.mockRouteSwitch attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.mockRouteSwitch.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; - self.mockRouteSwitch.translatesAutoresizingMaskIntoConstraints = NO; - [self.mockRouteSwitch.superview addConstraints:@[top, left, right]]; -} - -- (void)addRouteDescriptViewConstraints { - NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.routeDescriptView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.self.mockRouteSwitch attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; - NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.routeDescriptView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.routeDescriptView.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; - NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.routeDescriptView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.routeDescriptView.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; - self.routeDescriptView.translatesAutoresizingMaskIntoConstraints = NO; - [self.routeDescriptView.superview addConstraints:@[top, left, right]]; -} - -- (void)addRecordRouteSwitchConstraints { - NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.recordRouteSwitch attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.self.routeDescriptView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; - NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.recordRouteSwitch attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.recordRouteSwitch.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; - NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.recordRouteSwitch attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.recordRouteSwitch.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; - self.recordRouteSwitch.translatesAutoresizingMaskIntoConstraints = NO; - [self.recordRouteSwitch.superview addConstraints:@[top, left, right]]; -} - -- (void)setUpCoordinate:(CLLocationCoordinate2D)coordinate automicSetRegion:(BOOL)automicSetRegion placemark:(CLPlacemark *)placemark { +- (void)setUpCoordinate:(CLLocationCoordinate2D)coordinate automicSetRegion:(BOOL)automicSetRegion placemark:(CLPlacemark *)placemark level:(NSInteger)level +{ // Set annotation. self.annotation.coordinate = coordinate; - if ([LLLocationHelper shared].enable) { - [self setUpMockCoordinate:coordinate]; - } // Automic set map region if (automicSetRegion) { if (self.automicSetRegion) { - [self.mapView setCenterCoordinate:coordinate animated:YES]; + [self.mapVView setCenterCoordinate:coordinate zoomLevel:self.mapViewZoomLevel direction:0 animated:YES completionHandler:^{ + + }]; } else { [self animatedUpdateMapRegion:coordinate]; } @@ -218,17 +219,22 @@ - (void)setUpCoordinate:(CLLocationCoordinate2D)coordinate automicSetRegion:(BOO // Update if (!self.isAddAnnotation) { self.isAddAnnotation = YES; - [self.mapView addAnnotation:self.annotation]; - [self.mapView selectAnnotation:self.annotation animated:YES]; + [self.mapVView addAnnotation:self.annotation]; +// [self.mapVView selectAnnotation:self.annotation animated:YES completionHandler:^{ +// }]; } else { - [self.mapView deselectAnnotation:self.annotation animated:NO]; - [self.mapView selectAnnotation:self.annotation animated:NO]; + [self.mapVView deselectAnnotation:self.annotation animated:NO]; + [self.mapVView selectAnnotation:self.annotation animated:NO completionHandler:^{ + + }]; } } - (void)animatedUpdateMapRegion:(CLLocationCoordinate2D)coordinate { self.automicSetRegion = YES; - [self.mapView setRegion:MKCoordinateRegionMake(coordinate, MKCoordinateSpanMake(0.05, 0.05)) animated:YES]; + [self.mapVView setCenterCoordinate:coordinate zoomLevel:self.mapViewZoomLevel direction:0 animated:YES completionHandler:^{ + + }]; } - (void)updateLocationDescriptViewDetailTitle:(CLLocationCoordinate2D)coordinate { @@ -259,15 +265,18 @@ - (void)updateMockLocationSwitchValue:(BOOL)isOn { [LLLocationHelper shared].enable = isOn; [LLSettingManager shared].mockLocationEnable = @(isOn); if (isOn) { - [self setUpMockCoordinate:self.annotation.coordinate]; + [self setUpMockCoordinate:self.annotation.coordinate level:[LLConfig shared].mockLocationLevel]; } } -- (void)setUpMockCoordinate:(CLLocationCoordinate2D)coordinate { +- (void)setUpMockCoordinate:(CLLocationCoordinate2D)coordinate level:(NSInteger)level { [LLConfig shared].mockLocationLatitude = coordinate.latitude; [LLConfig shared].mockLocationLongitude = coordinate.longitude; [LLSettingManager shared].mockLocationLatitude = @(coordinate.latitude); [LLSettingManager shared].mockLocationLongitude = @(coordinate.longitude); + + [LLConfig shared].mockLocationLevel = level; + [LLSettingManager shared].mockLocationLevel = level; } - (void)reverseGeocode:(CLLocationCoordinate2D)coordinate { @@ -287,7 +296,7 @@ - (void)geocodeAddress:(NSString *)address { [self.geocoder geocodeAddressString:address inRegion:nil completionHandler:^(NSArray * _Nullable placemarks, NSError * _Nullable error) { if (!error && placemarks.count > 0) { CLPlacemark *placemark = placemarks.firstObject; - [weakSelf setUpCoordinate:placemark.location.coordinate automicSetRegion:YES placemark:placemark]; + [weakSelf setUpCoordinate:placemark.location.coordinate automicSetRegion:YES placemark:placemark level:0]; } }]; } @@ -346,6 +355,10 @@ - (void)stopRecordRoute { self.recordRouteSwitch.on = NO; self.recordRouteSwitch.detailTitle = nil; [self stopRecordRouteTimer]; + if (self.pointAnnotations.count) { + [self.mapVView removeAnnotations:self.pointAnnotations]; + [self.pointAnnotations removeAllObjects]; + } } - (void)startRecordRouteTimer { @@ -370,6 +383,7 @@ - (void)recordRouteTimerAction:(NSTimer *)timer { - (void)loadData { CLLocationCoordinate2D mockCoordinate = CLLocationCoordinate2DMake([LLConfig shared].mockLocationLatitude, [LLConfig shared].mockLocationLongitude); + NSInteger mockLevel = [LLConfig shared].mockLocationLevel; BOOL automicSetRegion = YES; if (mockCoordinate.latitude == 0 && mockCoordinate.longitude == 0) { mockCoordinate = CLLocationCoordinate2DMake(kLLDefaultMockLocationLatitude, kLLDefaultMockLocationLongitude); @@ -378,7 +392,7 @@ - (void)loadData { [self.locationManager startUpdatingLocation]; } } - [self setUpCoordinate:mockCoordinate automicSetRegion:automicSetRegion placemark:nil]; + [self setUpCoordinate:mockCoordinate automicSetRegion:automicSetRegion placemark:nil level:mockLevel]; } #pragma mark - Event response @@ -394,7 +408,7 @@ - (void)locationDescriptViewDidSelect { CLLocationDegrees lng = [array[1] doubleValue]; CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(lat, lng); if (CLLocationCoordinate2DIsValid(coordinate)) { - [weakSelf setUpCoordinate:coordinate automicSetRegion:YES placemark:nil]; + [weakSelf setUpCoordinate:coordinate automicSetRegion:YES placemark:nil level:0]; } }]; } @@ -418,6 +432,55 @@ - (void)routeDescriptViewDidSelect { }]; } +#pragma mark - Primary +- (void)addMockLocationSwitchConstraints { + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.mockLocationSwitch attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch.superview attribute:NSLayoutAttributeTop multiplier:1 constant:LL_NAVIGATION_HEIGHT]; + NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.mockLocationSwitch attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.mockLocationSwitch attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.mockLocationSwitch.translatesAutoresizingMaskIntoConstraints = NO; + [self.mockLocationSwitch.superview addConstraints:@[top, left, right]]; +} + +- (void)addLocationDescriptViewConstraints { + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.locationDescriptView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.mockLocationSwitch attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; + NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.locationDescriptView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.locationDescriptView.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.locationDescriptView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.locationDescriptView.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.locationDescriptView.translatesAutoresizingMaskIntoConstraints = NO; + [self.locationDescriptView.superview addConstraints:@[top, left, right]]; +} + +- (void)addAddressDescriptViewConstraints { + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.addressDescriptView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.locationDescriptView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; + NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.addressDescriptView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.addressDescriptView.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.addressDescriptView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.addressDescriptView.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.addressDescriptView.translatesAutoresizingMaskIntoConstraints = NO; + [self.addressDescriptView.superview addConstraints:@[top, left, right]]; +} + +- (void)addMockRouteSwitchConstraints { + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.mockRouteSwitch attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.addressDescriptView attribute:NSLayoutAttributeBottom multiplier:1 constant:kLLGeneralMargin]; + NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.mockRouteSwitch attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.mockRouteSwitch.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.mockRouteSwitch attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.mockRouteSwitch.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.mockRouteSwitch.translatesAutoresizingMaskIntoConstraints = NO; + [self.mockRouteSwitch.superview addConstraints:@[top, left, right]]; +} + +- (void)addRouteDescriptViewConstraints { + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.routeDescriptView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.self.mockRouteSwitch attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; + NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.routeDescriptView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.routeDescriptView.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.routeDescriptView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.routeDescriptView.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.routeDescriptView.translatesAutoresizingMaskIntoConstraints = NO; + [self.routeDescriptView.superview addConstraints:@[top, left, right]]; +} + +- (void)addRecordRouteSwitchConstraints { + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:self.recordRouteSwitch attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.self.routeDescriptView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; + NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:self.recordRouteSwitch attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.recordRouteSwitch.superview attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:self.recordRouteSwitch attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.recordRouteSwitch.superview attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.recordRouteSwitch.translatesAutoresizingMaskIntoConstraints = NO; + [self.recordRouteSwitch.superview addConstraints:@[top, left, right]]; +} + #pragma mark - Getters and setters - (LLTitleSwitchCellView *)mockLocationSwitch { if (!_mockLocationSwitch) { @@ -514,12 +577,14 @@ - (void)setRouteModel:(LLLocationMockRouteModel *)routeModel { } } -- (MKMapView *)mapView { - if (!_mapView) { - _mapView = [[MKMapView alloc] initWithFrame:CGRectZero]; - _mapView.delegate = self; +- (MGLMapView *)mapVView { + if (!_mapVView) { + _mapVView = [[MGLMapView alloc] initWithFrame:CGRectZero]; + _mapVView.delegate = self; + _mapVView.zoomLevel = self.mapViewZoomLevel; +// _mapVView.style = } - return _mapView; + return _mapVView; } - (LLAnnotation *)annotation { @@ -544,4 +609,25 @@ - (CLGeocoder *)geocoder { return _geocoder; } +- (NSMutableArray *)routeRecordings { + if (!_routeRecordings) { + _routeRecordings = [NSMutableArray array]; + } + return _routeRecordings; +} + +- (NSMutableArray *)annotations { + if (!_annotations) { + _annotations = [NSMutableArray array]; + } + return _annotations; +} + +- (NSMutableArray *)pointAnnotations { + if (!_pointAnnotations) { + _pointAnnotations = [NSMutableArray array]; + } + return _pointAnnotations; +} + @end diff --git a/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.h b/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.h index b5d32acc..4e9491b4 100644 --- a/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.h +++ b/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.h @@ -23,9 +23,12 @@ #import +#import + NS_ASSUME_NONNULL_BEGIN -@interface LLPinAnnotationView : MKPinAnnotationView +@interface LLPinAnnotationView : MGLAnnotationView + @end diff --git a/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.m b/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.m index 8f07918a..ada8930e 100644 --- a/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.m +++ b/LLDebugTool/Core/Component/Location/UserInterface/LLPinAnnotationView.m @@ -22,16 +22,41 @@ // SOFTWARE. #import "LLPinAnnotationView.h" +#import "UIImage+LL_Utils.h" +#import "LLImageNameConfig.h" + +@interface LLPinAnnotationView () + +@property (nonatomic, strong) UIImage *img; +@property (nonatomic, strong) UIImageView *imageView; + +@end @implementation LLPinAnnotationView -- (instancetype)initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier { +- (instancetype)initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) { self.draggable = YES; - self.animatesDrop = YES; - self.canShowCallout = YES; + self.frame = CGRectMake(0, 0, self.img.size.width, 80); + [self addSubview:self.imageView]; + self.imageView.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); } return self; } +- (UIImageView *)imageView { + if (!_imageView) { + _imageView = [[UIImageView alloc] initWithImage:self.img]; + + } + return _imageView; +} + +- (UIImage *)img { + if (!_img) { + _img = [UIImage LL_imageNamed:kStartPointImageName]; + } + return _img; +} + @end diff --git a/LLDebugTool/Core/Others/Const/LLConst.h b/LLDebugTool/Core/Others/Const/LLConst.h index e6c59102..8270ef1a 100644 --- a/LLDebugTool/Core/Others/Const/LLConst.h +++ b/LLDebugTool/Core/Others/Const/LLConst.h @@ -50,4 +50,5 @@ UIKIT_EXTERN CGFloat const kLLGeneralMargin; UIKIT_EXTERN double const kLLDefaultMockLocationLatitude; UIKIT_EXTERN double const kLLDefaultMockLocationLongitude; +UIKIT_EXTERN NSInteger const kLLDefaultMockLocationLevel; UIKIT_EXTERN NSTimeInterval const kLLDefaultMockRouteTimeInterval; diff --git a/LLDebugTool/Core/Others/Const/LLConst.m b/LLDebugTool/Core/Others/Const/LLConst.m index 5d8f3e9d..3942c2f2 100644 --- a/LLDebugTool/Core/Others/Const/LLConst.m +++ b/LLDebugTool/Core/Others/Const/LLConst.m @@ -50,4 +50,5 @@ double const kLLDefaultMockLocationLatitude = 39.908722; double const kLLDefaultMockLocationLongitude = 116.397499; +NSInteger const kLLDefaultMockLocationLevel = 0; NSTimeInterval const kLLDefaultMockRouteTimeInterval = 2; diff --git a/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.h b/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.h index 852481bb..9a9b4757 100644 --- a/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.h +++ b/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.h @@ -73,6 +73,9 @@ NS_ASSUME_NONNULL_BEGIN /// Last mock location longitude. @property (nonatomic, strong) NSNumber *mockLocationLongitude; +/// Last mock location level. +@property (nonatomic, assign) NSInteger mockLocationLevel; + /// Last mock route file path. @property (nonatomic, copy) NSString *mockRouteFilePath; diff --git a/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.m b/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.m index 243d76b3..8bb5cbf6 100644 --- a/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.m +++ b/LLDebugTool/Core/Others/Manager/SettingManager/LLSettingManager.m @@ -93,6 +93,10 @@ - (void)prepareForConfig { [LLConfig shared].mockLocationLatitude = [mockLocationLatitude doubleValue]; [LLConfig shared].mockLocationLongitude = [mockLocationLogitude doubleValue]; } + NSInteger mockLocationLevel = self.mockLocationLevel; + if (mockLocationLevel) { + [LLConfig shared].mockLocationLevel = mockLocationLevel; + } } #pragma mark - Getters and Setters @@ -208,6 +212,14 @@ - (NSNumber *)mockLocationLatitude { return [NSUserDefaults LL_numberForKey:@"mockLocationLatitude"]; } +- (void)setMockLocationLevel:(NSInteger)mockLocationLevel { + [NSUserDefaults LL_setInteger:mockLocationLevel forKey:@"mockLocationLevel"]; +} + +- (NSInteger)mockLocationLevel { + return [NSUserDefaults LL_integerForKey:@"mockLocationLevel"]; +} + - (void)setMockLocationLongitude:(NSNumber *)mockLocationLongitude { [NSUserDefaults LL_setNumber:mockLocationLongitude forKey:@"mockLocationLongitude"]; } diff --git a/LLDebugTool/Core/Others/Resource/LLDebugTool.bundle/ic_start_point@2x.png b/LLDebugTool/Core/Others/Resource/LLDebugTool.bundle/ic_start_point@2x.png new file mode 100644 index 00000000..c2d092cf Binary files /dev/null and b/LLDebugTool/Core/Others/Resource/LLDebugTool.bundle/ic_start_point@2x.png differ diff --git a/LLDebugTool/Core/Others/Resource/LLDebugTool.bundle/ic_start_point@3x.png b/LLDebugTool/Core/Others/Resource/LLDebugTool.bundle/ic_start_point@3x.png new file mode 100644 index 00000000..3e1bf79f Binary files /dev/null and b/LLDebugTool/Core/Others/Resource/LLDebugTool.bundle/ic_start_point@3x.png differ diff --git a/LLDebugTool/Core/Others/Resource/LLImageNameConfig.h b/LLDebugTool/Core/Others/Resource/LLImageNameConfig.h index 78797000..6bca19cb 100644 --- a/LLDebugTool/Core/Others/Resource/LLImageNameConfig.h +++ b/LLDebugTool/Core/Others/Resource/LLImageNameConfig.h @@ -34,6 +34,7 @@ static NSString *const kDoneImageName = @"done"; static NSString *const kBackImageName = @"back"; static NSString *const kFilterImageName = @"filter"; static NSString *const kShareImageName = @"share"; +static NSString *const kStartPointImageName = @"ic_start_point"; // Folder static NSString *const kFolderImageName = @"folder"; diff --git a/LLDebugTool/DebugTool/LLConfig.h b/LLDebugTool/DebugTool/LLConfig.h index 085be6f8..549491fd 100644 --- a/LLDebugTool/DebugTool/LLConfig.h +++ b/LLDebugTool/DebugTool/LLConfig.h @@ -286,6 +286,11 @@ Whether show widget border. Default is NO. */ @property (nonatomic, assign) double mockLocationLongitude; +/** + Mock location level + */ +@property (nonatomic, assign) NSInteger mockLocationLevel; + /** Time interval in mock route. default is kLLDefaultMockRouteTimeInterval. */ diff --git a/LLDebugToolDemo.xcodeproj/project.pbxproj b/LLDebugToolDemo.xcodeproj/project.pbxproj index 28162b8e..243a7b18 100644 --- a/LLDebugToolDemo.xcodeproj/project.pbxproj +++ b/LLDebugToolDemo.xcodeproj/project.pbxproj @@ -7,8 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 208678B3E17E2AAB3B0E945F /* libPods-LLDebugToolDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ECC0E7675B1A81455CB56 /* libPods-LLDebugToolDemo.a */; }; - 256DF576EB32FE0F9D9E099F /* libPods-LLDebugToolDemoUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 250A2DF7939C9F66F595658E /* libPods-LLDebugToolDemoUITests.a */; }; + 143CF0EAD99342F92DB93AB4 /* Pods_LLDebugToolDemoTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABE772361C8CAA0A74FD6100 /* Pods_LLDebugToolDemoTests.framework */; }; 360075E2235571EF00A606AC /* TestHtmlViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 360075E1235571EF00A606AC /* TestHtmlViewController.m */; }; 360075E5235576A800A606AC /* CustomWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 360075E4235576A800A606AC /* CustomWebViewController.m */; }; 3600762D2355AEE500A606AC /* LLComponentNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3600762C2355AEE500A606AC /* LLComponentNavigationController.m */; }; @@ -129,6 +128,8 @@ 36F93CBB238BC2450008C92E /* LLRouter+ShortCut.m in Sources */ = {isa = PBXBuildFile; fileRef = 36F93CBA238BC2450008C92E /* LLRouter+ShortCut.m */; }; 36F93CBE238BC59C0008C92E /* TestShortCutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 36F93CBD238BC59C0008C92E /* TestShortCutViewController.m */; }; 36FA263B215E1F4300462EA8 /* TestHierarchyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 36FA263A215E1F4300462EA8 /* TestHierarchyViewController.m */; }; + 53887CAA6BE8E1F02E085CC0 /* Pods_LLDebugToolDemoUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEFB9FC3A4D27DEDED51E620 /* Pods_LLDebugToolDemoUITests.framework */; }; + 90C4E4B6D323BEA83B11CABC /* Pods_LLDebugToolDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5FF43B3CF7032DC3C71B71B /* Pods_LLDebugToolDemo.framework */; }; C413AE8523995CEF001EB1F9 /* LLJsonTool.m in Sources */ = {isa = PBXBuildFile; fileRef = C413AE8423995CEF001EB1F9 /* LLJsonTool.m */; }; C413AE8823995DD9001EB1F9 /* LLSandboxTextPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C413AE8723995DD9001EB1F9 /* LLSandboxTextPreviewController.m */; }; C4299E6923941416005845A2 /* LLSandboxHtmlPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C4299E6823941416005845A2 /* LLSandboxHtmlPreviewController.m */; }; @@ -267,7 +268,7 @@ C4CF72F6239AB41400B2C4DC /* LLSandboxPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C4CF72F5239AB41400B2C4DC /* LLSandboxPreviewController.m */; }; C4D164AB23EAECE9007A141E /* LLEntryStyleModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D164AA23EAECE9007A141E /* LLEntryStyleModel.m */; }; C4D51D6B23E9A8A8009DAB1A /* LLMoveWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D51D6A23E9A8A8009DAB1A /* LLMoveWindow.m */; }; - D324B75781E09F9EA96AC8B5 /* libPods-LLDebugToolDemoTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D1B877316C71C92C11DF5A9A /* libPods-LLDebugToolDemoTests.a */; }; + DE657A082C461A6D004BFA5C /* MapxusMap+Map_Location.m in Sources */ = {isa = PBXBuildFile; fileRef = DE657A072C461A6D004BFA5C /* MapxusMap+Map_Location.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -289,7 +290,6 @@ /* Begin PBXFileReference section */ 0857CAF55E62609DE772D43C /* Pods-LLDebugToolDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLDebugToolDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.release.xcconfig"; sourceTree = ""; }; - 250A2DF7939C9F66F595658E /* libPods-LLDebugToolDemoUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LLDebugToolDemoUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 34ACB65EBB30B1CA47DFC39F /* Pods-LLDebugToolDemoUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLDebugToolDemoUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.release.xcconfig"; sourceTree = ""; }; 360075DF23556DAF00A606AC /* LLComponentDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLComponentDelegate.h; sourceTree = ""; }; 360075E0235571EF00A606AC /* TestHtmlViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestHtmlViewController.h; sourceTree = ""; }; @@ -546,10 +546,11 @@ 36FA2639215E1F4300462EA8 /* TestHierarchyViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestHierarchyViewController.h; sourceTree = ""; }; 36FA263A215E1F4300462EA8 /* TestHierarchyViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestHierarchyViewController.m; sourceTree = ""; }; 532D187B41D9EFF04391FD36 /* Pods-LLDebugToolDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLDebugToolDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.debug.xcconfig"; sourceTree = ""; }; - 533ECC0E7675B1A81455CB56 /* libPods-LLDebugToolDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LLDebugToolDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 638C108F891808060C7ED772 /* Pods-LLDebugToolDemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLDebugToolDemoTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.debug.xcconfig"; sourceTree = ""; }; 7630F57F70FEB38A6705DA1A /* Pods-LLDebugToolDemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLDebugToolDemoTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.release.xcconfig"; sourceTree = ""; }; + ABE772361C8CAA0A74FD6100 /* Pods_LLDebugToolDemoTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LLDebugToolDemoTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; ADC0AD5C07B446A537F680CF /* Pods-LLDebugToolDemoUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LLDebugToolDemoUITests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.debug.xcconfig"; sourceTree = ""; }; + B5FF43B3CF7032DC3C71B71B /* Pods_LLDebugToolDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LLDebugToolDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C413AE8323995CEF001EB1F9 /* LLJsonTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLJsonTool.h; sourceTree = ""; }; C413AE8423995CEF001EB1F9 /* LLJsonTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LLJsonTool.m; sourceTree = ""; }; C413AE8623995DD9001EB1F9 /* LLSandboxTextPreviewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLSandboxTextPreviewController.h; sourceTree = ""; }; @@ -820,7 +821,9 @@ C4D164AA23EAECE9007A141E /* LLEntryStyleModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LLEntryStyleModel.m; sourceTree = ""; }; C4D51D6923E9A8A8009DAB1A /* LLMoveWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLMoveWindow.h; sourceTree = ""; }; C4D51D6A23E9A8A8009DAB1A /* LLMoveWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LLMoveWindow.m; sourceTree = ""; }; - D1B877316C71C92C11DF5A9A /* libPods-LLDebugToolDemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LLDebugToolDemoTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + DE657A062C461A6D004BFA5C /* MapxusMap+Map_Location.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MapxusMap+Map_Location.h"; sourceTree = ""; }; + DE657A072C461A6D004BFA5C /* MapxusMap+Map_Location.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "MapxusMap+Map_Location.m"; sourceTree = ""; }; + FEFB9FC3A4D27DEDED51E620 /* Pods_LLDebugToolDemoUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LLDebugToolDemoUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -828,7 +831,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D324B75781E09F9EA96AC8B5 /* libPods-LLDebugToolDemoTests.a in Frameworks */, + 143CF0EAD99342F92DB93AB4 /* Pods_LLDebugToolDemoTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -836,7 +839,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 256DF576EB32FE0F9D9E099F /* libPods-LLDebugToolDemoUITests.a in Frameworks */, + 53887CAA6BE8E1F02E085CC0 /* Pods_LLDebugToolDemoUITests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -844,7 +847,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 208678B3E17E2AAB3B0E945F /* libPods-LLDebugToolDemo.a in Frameworks */, + 90C4E4B6D323BEA83B11CABC /* Pods_LLDebugToolDemo.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -958,6 +961,8 @@ children = ( 3624D3FD2383F72B00DBE692 /* MKMapView+LL_Location.h */, 3624D3FE2383F72B00DBE692 /* MKMapView+LL_Location.m */, + DE657A062C461A6D004BFA5C /* MapxusMap+Map_Location.h */, + DE657A072C461A6D004BFA5C /* MapxusMap+Map_Location.m */, ); path = MKMapView; sourceTree = ""; @@ -1397,9 +1402,9 @@ 5DAB3E295118238CB64A77C2 /* Frameworks */ = { isa = PBXGroup; children = ( - 533ECC0E7675B1A81455CB56 /* libPods-LLDebugToolDemo.a */, - D1B877316C71C92C11DF5A9A /* libPods-LLDebugToolDemoTests.a */, - 250A2DF7939C9F66F595658E /* libPods-LLDebugToolDemoUITests.a */, + B5FF43B3CF7032DC3C71B71B /* Pods_LLDebugToolDemo.framework */, + ABE772361C8CAA0A74FD6100 /* Pods_LLDebugToolDemoTests.framework */, + FEFB9FC3A4D27DEDED51E620 /* Pods_LLDebugToolDemoUITests.framework */, ); name = Frameworks; sourceTree = ""; @@ -2357,6 +2362,7 @@ 36E248812123BAE300D03F44 /* Sources */, 36E248822123BAE300D03F44 /* Frameworks */, 36E248832123BAE300D03F44 /* Resources */, + EE1814AE5FF73825FB89DE9B /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -2376,6 +2382,7 @@ 36E2488F2123BAE900D03F44 /* Sources */, 36E248902123BAE900D03F44 /* Frameworks */, 36E248912123BAE900D03F44 /* Resources */, + C35B0509730E9C7F57391CFE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -2395,6 +2402,7 @@ C43BA803205AB095006307BE /* Sources */, C43BA804205AB095006307BE /* Frameworks */, C43BA805205AB095006307BE /* Resources */, + F67AB4150FFB4611BFE21F60 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -2534,6 +2542,26 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + C35B0509730E9C7F57391CFE /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", + "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; D88507F3CEB58B2391736619 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -2552,6 +2580,56 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + EE1814AE5FF73825FB89DE9B /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", + "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + F67AB4150FFB4611BFE21F60 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", + "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", + "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK/MapxusBaseSDK.framework/MapxusBaseSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit/MapxusComponentKit.framework/MapxusComponentKit", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK/MapxusMapSDK.framework/MapxusMapSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK/Mapbox.framework/Mapbox", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYModel.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapxusBaseSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapxusComponentKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapxusMapSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -2634,6 +2712,7 @@ 36BC8E25231D052300E4D29B /* LLEntryView.m in Sources */, 362F833C2302BE8F007C9168 /* LLEntryBallView.m in Sources */, C498568F22ED8D4800E9FBE2 /* LLNetworkFilterView.m in Sources */, + DE657A082C461A6D004BFA5C /* MapxusMap+Map_Location.m in Sources */, 36743D412313879700002A92 /* LLReachability.m in Sources */, C4B4E47322F9C90900F70277 /* LLEditTableViewController.m in Sources */, C4B4E45622F9C90900F70277 /* LLButton.m in Sources */, @@ -3051,7 +3130,7 @@ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = ZNBZ7BZAKZ; GCC_PREFIX_HEADER = ""; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -3074,7 +3153,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MARKETING_VERSION = 1.3.8; - PRODUCT_BUNDLE_IDENTIFIER = myCompany.HDB.LLDebugToolDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.mapxus.DropInUISDKExample; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; TARGETED_DEVICE_FAMILY = "1,2"; @@ -3089,7 +3168,7 @@ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = ZNBZ7BZAKZ; GCC_PREFIX_HEADER = ""; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -3112,7 +3191,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MARKETING_VERSION = 1.3.8; - PRODUCT_BUNDLE_IDENTIFIER = myCompany.HDB.LLDebugToolDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.mapxus.DropInUISDKExample; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/LLDebugToolDemo/AppDelegate.m b/LLDebugToolDemo/AppDelegate.m index 70750a11..b5254714 100644 --- a/LLDebugToolDemo/AppDelegate.m +++ b/LLDebugToolDemo/AppDelegate.m @@ -7,11 +7,12 @@ // #import "AppDelegate.h" +#import // If you integrate with cocoapods, used #import . #import "LLDebug.h" -@interface AppDelegate () +@interface AppDelegate () @end @@ -19,6 +20,14 @@ @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + NSString *mapxus_key = @"bc635fc131d04e4fb541ab9e26924976"; + NSString *mapxus_secret = @"738fa012aeb0422189eccfb353d05698"; + // + MXMMapServices *services = [MXMMapServices sharedServices]; + services.delegate = self; + [services registerWithApiKey:mapxus_key secret:mapxus_secret]; + + // Start working with config. [[LLDebugTool sharedTool] startWorkingWithConfigBlock:^(LLConfig * _Nonnull config) { @@ -46,6 +55,20 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( return YES; } +/// 注册成功回调 +- (void)registerMXMServiceSuccess { + +} + +/** + 注册错误回调 + + @param error 错误信息 + */ +- (void)registerMXMServiceFailWithError:(NSError *)error { + +} + - (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. diff --git a/LLDebugToolDemo/Base.lproj/Main.storyboard b/LLDebugToolDemo/Base.lproj/Main.storyboard index 137ec608..ada0d3c4 100644 --- a/LLDebugToolDemo/Base.lproj/Main.storyboard +++ b/LLDebugToolDemo/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -19,14 +19,8 @@ - - - - - - - + @@ -36,19 +30,15 @@ - + - - - - @@ -62,7 +52,7 @@ - + diff --git a/LLDebugToolDemo/DemoViewControllers/TestLocationViewController.m b/LLDebugToolDemo/DemoViewControllers/TestLocationViewController.m index 13970312..9d87eddc 100644 --- a/LLDebugToolDemo/DemoViewControllers/TestLocationViewController.m +++ b/LLDebugToolDemo/DemoViewControllers/TestLocationViewController.m @@ -10,10 +10,11 @@ #import #import +#import #import "LLDebugTool.h" -@interface TestLocationAnnotation : NSObject +@interface TestLocationAnnotation : NSObject @property (nonatomic, assign) CLLocationCoordinate2D coordinate; @@ -23,9 +24,11 @@ @implementation TestLocationAnnotation @end -@interface TestLocationViewController () +@interface TestLocationViewController () -@property (nonatomic, strong) MKMapView *mapView; +@property (nonatomic, strong) MGLMapView *mapVView; +@property (nonatomic, strong) MapxusMap *mapxusMap; +@property (nonatomic, assign) CGFloat mapViewZoomLevel; @property (nonatomic, strong) TestLocationAnnotation *annotation; @@ -40,11 +43,19 @@ @implementation TestLocationViewController - (void)viewDidLoad { [super viewDidLoad]; + self.mapViewZoomLevel = 17.0; self.title = NSLocalizedString(@"test.location", nil); self.view.backgroundColor = [UIColor whiteColor]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(testMockLocation)]; - [self.view addSubview:self.mapView]; + [self.view addSubview:self.mapVView]; + + MXMConfiguration *configuration = [[MXMConfiguration alloc] init]; + self.mapxusMap = [[MapxusMap alloc] initWithMapView:self.mapVView configuration:configuration]; + self.mapxusMap.delegate = self; + [self.mapxusMap setMapStyleWithName:@"drop_in_ui_v2"]; + self.mapxusMap.collapseCopyright = YES; + [self.view addSubview:self.toastLabel]; [self.manager startUpdatingLocation]; } @@ -52,32 +63,33 @@ - (void)viewDidLoad { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.navigationController.navigationBarHidden = NO; + [self.manager startUpdatingLocation]; } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; CGFloat navigationBarHeight = self.navigationController.navigationBar.frame.origin.y + self.navigationController.navigationBar.frame.size.height; self.toastLabel.frame = CGRectMake(0, navigationBarHeight, self.view.frame.size.width, 80); - self.mapView.frame = CGRectMake(0, navigationBarHeight + 80, self.view.frame.size.width, self.view.frame.size.height - navigationBarHeight - 80); + self.mapVView.frame = CGRectMake(0, navigationBarHeight + 80, self.view.frame.size.width, self.view.frame.size.height - navigationBarHeight - 80); } -#pragma mark - MKMapViewDelegate -- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { - NSLog(@"%@, %@",NSStringFromSelector(_cmd), userLocation); -} +#pragma mark - MGLMapViewDelegate + +#pragma mark - MapxusMapDelegate #pragma mark - CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { - NSLog(@"%@, %@",NSStringFromSelector(_cmd), locations); + NSLog(@"*** %@, %@, %ld",NSStringFromSelector(_cmd), manager, locations.firstObject.floor.level); if (!locations.firstObject) { return; } self.annotation.coordinate = locations.firstObject.coordinate; - if (![self.mapView.annotations containsObject:self.annotation]) { - [self.mapView addAnnotation:self.annotation]; - self.mapView.region = MKCoordinateRegionMake(locations.firstObject.coordinate, MKCoordinateSpanMake(0.05, 0.05)); + if (![self.mapVView.annotations containsObject:self.annotation]) { + [self.mapVView addAnnotation:self.annotation]; +// self.mapVView.region = MKCoordinateRegionMake(locations.firstObject.coordinate, MKCoordinateSpanMake(0.05, 0.05)); + [self.mapVView setCenterCoordinate:locations.firstObject.coordinate]; } else { - self.mapView.centerCoordinate = locations.firstObject.coordinate; + self.mapVView.centerCoordinate = locations.firstObject.coordinate; } _toastLabel.text = [NSString stringWithFormat:@"Lat & Lng : %0.6f, %0.6f", self.annotation.coordinate.latitude, self.annotation.coordinate.longitude]; } @@ -101,13 +113,16 @@ - (void)testMockLocation { } #pragma mark - Getters and setters -- (MKMapView *)mapView { - if (!_mapView) { - _mapView = [[MKMapView alloc] init]; - _mapView.showsUserLocation = YES; - _mapView.delegate = self; + +- (MGLMapView *)mapVView { + if (!_mapVView) { + _mapVView = [[MGLMapView alloc] initWithFrame:CGRectZero]; + _mapVView.delegate = self; + _mapVView.zoomLevel = self.mapViewZoomLevel; + _mapVView.showsUserLocation = YES; +// _mapVView.locationManager = self.manager; } - return _mapView; + return _mapVView; } - (TestLocationAnnotation *)annotation { @@ -130,6 +145,7 @@ - (CLLocationManager *)manager { if (!_manager) { _manager = [[CLLocationManager alloc] init]; _manager.delegate = self; + _manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; } return _manager; } diff --git a/LLDebugToolDemo/DemoViewControllers/TestNetworkViewController.m b/LLDebugToolDemo/DemoViewControllers/TestNetworkViewController.m index 8ce6ba3e..d7d4f830 100644 --- a/LLDebugToolDemo/DemoViewControllers/TestNetworkViewController.m +++ b/LLDebugToolDemo/DemoViewControllers/TestNetworkViewController.m @@ -60,13 +60,13 @@ - (void)testNormalNetworkRequest { NSString *url = @"http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?&format=json&appid=379020&bk_key=%E7%81%AB%E5%BD%B1%E5%BF%8D%E8%80%85&bk_length=600"; // Use AFHttpSessionManager - [[NetTool shared].afHTTPSessionManager GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { - NSLog(@"%f",downloadProgress.completedUnitCount * 1.0 / downloadProgress.totalUnitCount); - } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - [[LLDebugTool sharedTool] executeAction:LLDebugToolActionNetwork]; - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - [[LLDebugTool sharedTool] executeAction:LLDebugToolActionNetwork]; - }]; +// [[NetTool shared].afHTTPSessionManager GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { +// NSLog(@"%f",downloadProgress.completedUnitCount * 1.0 / downloadProgress.totalUnitCount); +// } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { +// [[LLDebugTool sharedTool] executeAction:LLDebugToolActionNetwork]; +// } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { +// [[LLDebugTool sharedTool] executeAction:LLDebugToolActionNetwork]; +// }]; } - (void)testNormalSessionNetworkRequest { diff --git a/LLDebugToolDemo/Resource/LLDebugTool.json b/LLDebugToolDemo/Resource/LLDebugTool.json index 52d67e98..d72f8df9 100644 --- a/LLDebugToolDemo/Resource/LLDebugTool.json +++ b/LLDebugToolDemo/Resource/LLDebugTool.json @@ -1,7 +1,16 @@ { "key" : "LLDebugTool", "data" : [ - {"lng" : 113.944125, "lat" : 22.524385}, - {"lng" : 113.944200, "lat" : 22.524454} + { + "lng" : 113.944125, + "lat" : 22.524385, + "level" : 1 + }, + + { + "lng" : 113.944200, + "lat" : 22.524454, + "level" : 1 + } ] } diff --git a/LLDebugToolDemo/ViewController.m b/LLDebugToolDemo/ViewController.m index 1720f3c6..6931a7e8 100644 --- a/LLDebugToolDemo/ViewController.m +++ b/LLDebugToolDemo/ViewController.m @@ -55,7 +55,7 @@ - (void)viewWillAppear:(BOOL)animated { #pragma mark - Primary - (void)doSomeActions { - [self requestPhotoAuthorization]; +// [self requestPhotoAuthorization]; [self requestLocationAuthorization]; [self doSandboxIfNeeded]; [self doCrashIfNeeded]; @@ -114,35 +114,6 @@ - (void)copyFileWithExtensionIfNeeded:(NSString *)extension { } - (void)doNetwork { - __block __weak typeof(self) weakSelf = self; - //Network Request - NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1567589759362&di=20c415aa38f25ca77270c717ae988424&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201602%2F15%2F20160215231800_zrCN8.jpeg"]]; - [urlRequest setHTTPMethod:@"GET"]; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [NSURLConnection sendAsynchronousRequest:urlRequest - queue:[[NSOperationQueue alloc] init] - completionHandler:^(NSURLResponse *_Nullable response, NSData *_Nullable data, NSError *_Nullable connectionError) { - dispatch_async(dispatch_get_main_queue(), ^{ - if (!connectionError) { - UIImage *image = [[UIImage alloc] initWithData:data]; - weakSelf.imgView.image = image; - } - }); - }]; -#pragma clang diagnostic pop - - // Json Response - [[NetTool shared] - .afHTTPSessionManager GET:@"http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?&format=json&appid=379020&bk_key=%E7%81%AB%E5%BD%B1%E5%BF%8D%E8%80%85&bk_length=600" - parameters:nil - progress:nil - success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) { - - } - failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error){ - - }]; //NSURLSession NSMutableURLRequest *htmlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]; @@ -330,7 +301,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N } } } else if (indexPath.section == 1) { - cell.textLabel.text = NSLocalizedString(@"test.network.request", nil); + cell.textLabel.text = NSLocalizedString(@"test.location", nil); cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } else if (indexPath.section == 2) { cell.textLabel.text = NSLocalizedString(@"test.log", nil); @@ -357,7 +328,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N cell.textLabel.text = NSLocalizedString(@"test.html", nil); cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } else if (indexPath.section == 12) { - cell.textLabel.text = NSLocalizedString(@"test.location", nil); + cell.textLabel.text = NSLocalizedString(@"test.network.request", nil); cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } else if (indexPath.section == 13) { cell.textLabel.text = NSLocalizedString(@"test.short.cut", nil); @@ -374,7 +345,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath [self testWindowStyle]; } } else if (indexPath.section == 1) { - [self testNetwork]; + [self testLocation]; } else if (indexPath.section == 2) { [self testLog]; } else if (indexPath.section == 3) { @@ -396,7 +367,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath } else if (indexPath.section == 11) { [self testHtml]; } else if (indexPath.section == 12) { - [self testLocation]; + [self testNetwork]; } else if (indexPath.section == 13) { [self testShortCut]; } @@ -407,7 +378,7 @@ - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInte if (section == 0) { return @"LLConfig"; } else if (section == 1) { - return @"Network Request"; + return @"Location"; } else if (section == 2) { return @"Log"; } else if (section == 3) { @@ -429,7 +400,7 @@ - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInte } else if (section == 11) { return @"Html"; } else if (section == 12) { - return @"Location"; + return @"Network Request"; } else if (section == 13) { return @"Short Cut"; } diff --git a/Podfile b/Podfile index 0325d694..cfecf90e 100644 --- a/Podfile +++ b/Podfile @@ -1,12 +1,17 @@ # Uncomment the next line to define a global platform for your project - platform :ios, '8.0' + platform :ios, '12.0' + +source 'https://github.com/Mapxus/mapxusSpecs.git' +source 'https://github.com/CocoaPods/Specs.git' target 'LLDebugToolDemo' do # Uncomment the next line if you're using Swift or would like to use dynamic frameworks - # use_frameworks! + use_frameworks! # Pods for LLDebugToolDemo - + pod 'MapxusMapSDK', '6.8.0' + pod 'MapxusComponentKit', '6.8.0' + # Request pod 'FMDB','~> 2.0',:inhibit_warnings => true diff --git a/Podfile.lock b/Podfile.lock index 59846d2b..c3457bf7 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,37 +1,63 @@ PODS: - - AFNetworking (3.2.1): - - AFNetworking/NSURLSession (= 3.2.1) - - AFNetworking/Reachability (= 3.2.1) - - AFNetworking/Security (= 3.2.1) - - AFNetworking/Serialization (= 3.2.1) - - AFNetworking/UIKit (= 3.2.1) - - AFNetworking/NSURLSession (3.2.1): + - AFNetworking (4.0.2): + - AFNetworking/NSURLSession (= 4.0.2) + - AFNetworking/Reachability (= 4.0.2) + - AFNetworking/Security (= 4.0.2) + - AFNetworking/Serialization (= 4.0.2) + - AFNetworking/UIKit (= 4.0.2) + - AFNetworking/NSURLSession (4.0.2): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - - AFNetworking/Reachability (3.2.1) - - AFNetworking/Security (3.2.1) - - AFNetworking/Serialization (3.2.1) - - AFNetworking/UIKit (3.2.1): + - AFNetworking/Reachability (4.0.2) + - AFNetworking/Security (4.0.2) + - AFNetworking/Serialization (4.0.2) + - AFNetworking/UIKit (4.0.2): - AFNetworking/NSURLSession - - FMDB (2.7.5): - - FMDB/standard (= 2.7.5) - - FMDB/standard (2.7.5) + - FMDB (2.7.11): + - FMDB/standard (= 2.7.11) + - FMDB/standard (2.7.11) + - MapxusBaseSDK (6.8.0): + - AFNetworking/NSURLSession (~> 4.0.2) + - AFNetworking/Reachability (~> 4.0.2) + - AFNetworking/Security (~> 4.0.2) + - AFNetworking/Serialization (~> 4.0.2) + - YYModel (~> 1.0.5) + - MapxusComponentKit (6.8.0): + - MapxusMapSDK (= 6.8.0) + - MapxusMapSDK (6.8.0): + - MapxusBaseSDK (= 6.8.0) + - MapxusRenderSDK (= 5.13.0) + - MapxusRenderSDK (5.13.0) + - YYModel (1.0.5) DEPENDENCIES: - AFNetworking - FMDB - FMDB (~> 2.0) + - MapxusComponentKit (= 6.8.0) + - MapxusMapSDK (= 6.8.0) SPEC REPOS: - trunk: - - AFNetworking + https://github.com/CocoaPods/Specs.git: - FMDB + https://github.com/Mapxus/mapxusSpecs.git: + - AFNetworking + - MapxusBaseSDK + - MapxusComponentKit + - MapxusMapSDK + - MapxusRenderSDK + - YYModel SPEC CHECKSUMS: - AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 - FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + AFNetworking: 24bbe15bca5f5c108a34a2608c8efd9d548ee884 + FMDB: 57486c1117fd8e0e6b947b2f54c3f42bf8e57a4e + MapxusBaseSDK: d1ac2e7165ff2600ec81fb3af9abd4d9e607dba5 + MapxusComponentKit: 646e65155abb23e03e873915adc77492cd4996ce + MapxusMapSDK: 622660fb9a76879152e2166df874a0c3b81cb044 + MapxusRenderSDK: 9afa40a07888b84ffe8ccb03b53958fb9e670def + YYModel: 035c452ebe1aca91282aa570739c55f3d5e1b16e -PODFILE CHECKSUM: ab4957274e713562b891c02d11a1a0f6dac26a22 +PODFILE CHECKSUM: 1d84f9877c3c87b85572a8446fe9182b85fa6a58 -COCOAPODS: 1.8.4 +COCOAPODS: 1.15.2 diff --git a/Pods/AFNetworking/AFNetworking/AFCompatibilityMacros.h b/Pods/AFNetworking/AFNetworking/AFCompatibilityMacros.h index a83d1344..1f0ab26d 100644 --- a/Pods/AFNetworking/AFNetworking/AFCompatibilityMacros.h +++ b/Pods/AFNetworking/AFNetworking/AFCompatibilityMacros.h @@ -22,10 +22,16 @@ #ifndef AFCompatibilityMacros_h #define AFCompatibilityMacros_h +#ifdef API_AVAILABLE + #define AF_API_AVAILABLE(...) API_AVAILABLE(__VA_ARGS__) +#else + #define AF_API_AVAILABLE(...) +#endif // API_AVAILABLE + #ifdef API_UNAVAILABLE - #define AF_API_UNAVAILABLE(x) API_UNAVAILABLE(x) + #define AF_API_UNAVAILABLE(...) API_UNAVAILABLE(__VA_ARGS__) #else - #define AF_API_UNAVAILABLE(x) + #define AF_API_UNAVAILABLE(...) #endif // API_UNAVAILABLE #if __has_warning("-Wunguarded-availability-new") @@ -34,4 +40,10 @@ #define AF_CAN_USE_AT_AVAILABLE 0 #endif +#if ((__IPHONE_OS_VERSION_MAX_ALLOWED && __IPHONE_OS_VERSION_MAX_ALLOWED < 100000) || (__MAC_OS_VERSION_MAX_ALLOWED && __MAC_OS_VERSION_MAX_ALLOWED < 101200) ||(__WATCH_OS_MAX_VERSION_ALLOWED && __WATCH_OS_MAX_VERSION_ALLOWED < 30000) ||(__TV_OS_MAX_VERSION_ALLOWED && __TV_OS_MAX_VERSION_ALLOWED < 100000)) + #define AF_CAN_INCLUDE_SESSION_TASK_METRICS 0 +#else + #define AF_CAN_INCLUDE_SESSION_TASK_METRICS 1 +#endif + #endif /* AFCompatibilityMacros_h */ diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h index 64ee5a81..943fc22d 100644 --- a/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h +++ b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h @@ -25,12 +25,6 @@ #endif #import -#if TARGET_OS_IOS || TARGET_OS_WATCH || TARGET_OS_TV -#import -#else -#import -#endif - #import "AFURLSessionManager.h" /** @@ -40,8 +34,6 @@ Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. - For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. - ## Methods to Override To change the behavior of all data task operation construction, which is also used in the `GET` / `POST` / et al. convenience methods, override `dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler:`. @@ -140,115 +132,75 @@ NS_ASSUME_NONNULL_BEGIN /** Creates and runs an `NSURLSessionDataTask` with a `GET` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString - parameters:(nullable id)parameters - success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure DEPRECATED_ATTRIBUTE; - - -/** - Creates and runs an `NSURLSessionDataTask` with a `GET` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param downloadProgress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler: */ - (nullable NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; /** Creates and runs an `NSURLSessionDataTask` with a `HEAD` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes a single arguments: the data task. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:completionHandler: */ - (nullable NSURLSessionDataTask *)HEAD:(NSString *)URLString - parameters:(nullable id)parameters - success:(nullable void (^)(NSURLSessionDataTask *task))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a `POST` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(nullable id)parameters - success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure DEPRECATED_ATTRIBUTE; + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; /** Creates and runs an `NSURLSessionDataTask` with a `POST` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param uploadProgress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler: */ - (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; /** Creates and runs an `NSURLSessionDataTask` with a multipart `POST` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(nullable id)parameters - constructingBodyWithBlock:(nullable void (^)(id formData))block - success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure DEPRECATED_ATTRIBUTE; - -/** - Creates and runs an `NSURLSessionDataTask` with a multipart `POST` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. @param uploadProgress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler: */ - (nullable NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers constructingBodyWithBlock:(nullable void (^)(id formData))block progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success @@ -256,48 +208,77 @@ NS_ASSUME_NONNULL_BEGIN /** Creates and runs an `NSURLSessionDataTask` with a `PUT` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:completionHandler: */ - (nullable NSURLSessionDataTask *)PUT:(NSString *)URLString - parameters:(nullable id)parameters - success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; /** Creates and runs an `NSURLSessionDataTask` with a `PATCH` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:completionHandler: */ - (nullable NSURLSessionDataTask *)PATCH:(NSString *)URLString - parameters:(nullable id)parameters - success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; /** Creates and runs an `NSURLSessionDataTask` with a `DELETE` request. - + @param URLString The URL string used to create the request URL. @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - + @see -dataTaskWithRequest:completionHandler: */ - (nullable NSURLSessionDataTask *)DELETE:(NSString *)URLString - parameters:(nullable id)parameters - success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; + +/** + Creates an `NSURLSessionDataTask` with a custom `HTTPMethod` request. + + @param method The HTTPMethod string used to create the request. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param headers The headers appended to the default headers for this request. + @param uploadProgress A block object to be executed when the upload progress is updated. Note this block is called on the session queue, not the main queue. + @param downloadProgress A block object to be executed when the download progress is updated. Note this block is called on the session queue, not the main queue. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler: + */ +- (nullable NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + uploadProgress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress + downloadProgress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress + success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure; @end diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m index cab11c28..b4ab5915 100644 --- a/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m +++ b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m @@ -118,99 +118,80 @@ - (void)setSecurityPolicy:(AFSecurityPolicy *)securityPolicy { #pragma mark - - (NSURLSessionDataTask *)GET:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + progress:(nullable void (^)(NSProgress * _Nonnull))downloadProgress + success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { - - return [self GET:URLString parameters:parameters progress:nil success:success failure:failure]; -} - -- (NSURLSessionDataTask *)GET:(NSString *)URLString - parameters:(id)parameters - progress:(void (^)(NSProgress * _Nonnull))downloadProgress - success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success - failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure -{ - + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"GET" URLString:URLString parameters:parameters + headers:headers uploadProgress:nil downloadProgress:downloadProgress success:success failure:failure]; - + [dataTask resume]; - + return dataTask; } - (NSURLSessionDataTask *)HEAD:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask * _Nonnull))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:^(NSURLSessionDataTask *task, __unused id responseObject) { + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters headers:headers uploadProgress:nil downloadProgress:nil success:^(NSURLSessionDataTask *task, __unused id responseObject) { if (success) { success(task); } } failure:failure]; - + [dataTask resume]; - + return dataTask; } -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress + success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure { - return [self POST:URLString parameters:parameters progress:nil success:success failure:failure]; -} - -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - progress:(void (^)(NSProgress * _Nonnull))uploadProgress - success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success - failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"POST" URLString:URLString parameters:parameters uploadProgress:uploadProgress downloadProgress:nil success:success failure:failure]; - + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"POST" URLString:URLString parameters:parameters headers:headers uploadProgress:uploadProgress downloadProgress:nil success:success failure:failure]; + [dataTask resume]; - + return dataTask; } - (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers constructingBodyWithBlock:(nullable void (^)(id _Nonnull))block - success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success - failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure -{ - return [self POST:URLString parameters:parameters constructingBodyWithBlock:block progress:nil success:success failure:failure]; -} - -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - constructingBodyWithBlock:(void (^)(id formData))block progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure + success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { NSError *serializationError = nil; NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; + for (NSString *headerField in headers.keyEnumerator) { + [request setValue:headers[headerField] forHTTPHeaderField:headerField]; + } if (serializationError) { if (failure) { dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ failure(nil, serializationError); }); } - + return nil; } - + __block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest:request progress:uploadProgress completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { if (error) { if (failure) { @@ -222,58 +203,66 @@ - (NSURLSessionDataTask *)POST:(NSString *)URLString } } }]; - + [task resume]; - + return task; } - (NSURLSessionDataTask *)PUT:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure { - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:success failure:failure]; - + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters headers:headers uploadProgress:nil downloadProgress:nil success:success failure:failure]; + [dataTask resume]; - + return dataTask; } - (NSURLSessionDataTask *)PATCH:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure { - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:success failure:failure]; - + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters headers:headers uploadProgress:nil downloadProgress:nil success:success failure:failure]; + [dataTask resume]; - + return dataTask; } - (NSURLSessionDataTask *)DELETE:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers + success:(nullable void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask *task, NSError *error))failure { - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:success failure:failure]; - + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters headers:headers uploadProgress:nil downloadProgress:nil success:success failure:failure]; + [dataTask resume]; - + return dataTask; } + - (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method URLString:(NSString *)URLString - parameters:(id)parameters + parameters:(nullable id)parameters + headers:(nullable NSDictionary *)headers uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgress - success:(void (^)(NSURLSessionDataTask *, id))success - failure:(void (^)(NSURLSessionDataTask *, NSError *))failure + success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success + failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure { NSError *serializationError = nil; NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; + for (NSString *headerField in headers.keyEnumerator) { + [request setValue:headers[headerField] forHTTPHeaderField:headerField]; + } if (serializationError) { if (failure) { dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ @@ -321,11 +310,7 @@ - (instancetype)initWithCoder:(NSCoder *)decoder { if (!configuration) { NSString *configurationIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"identifier"]; if (configurationIdentifier) { -#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1100) configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:configurationIdentifier]; -#else - configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:configurationIdentifier]; -#endif } } diff --git a/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m b/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m index ce746c38..45aeb2f7 100644 --- a/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m +++ b/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m @@ -32,6 +32,7 @@ NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworkingReachabilityNotificationStatusItem"; typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); +typedef AFNetworkReachabilityManager * (^AFNetworkReachabilityStatusCallback)(AFNetworkReachabilityStatus status); NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status) { switch (status) { @@ -78,20 +79,21 @@ static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetwork * a queued notification (for an earlier status condition) is processed after * the later update, resulting in the listener being left in the wrong state. */ -static void AFPostReachabilityStatusChange(SCNetworkReachabilityFlags flags, AFNetworkReachabilityStatusBlock block) { +static void AFPostReachabilityStatusChange(SCNetworkReachabilityFlags flags, AFNetworkReachabilityStatusCallback block) { AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); dispatch_async(dispatch_get_main_queue(), ^{ + AFNetworkReachabilityManager *manager = nil; if (block) { - block(status); + manager = block(status); } NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; NSDictionary *userInfo = @{ AFNetworkingReachabilityNotificationStatusItem: @(status) }; - [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:userInfo]; + [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:manager userInfo:userInfo]; }); } static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) { - AFPostReachabilityStatusChange(flags, (__bridge AFNetworkReachabilityStatusBlock)info); + AFPostReachabilityStatusChange(flags, (__bridge AFNetworkReachabilityStatusCallback)info); } @@ -210,21 +212,22 @@ - (void)startMonitoring { } __weak __typeof(self)weakSelf = self; - AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { + AFNetworkReachabilityStatusCallback callback = ^(AFNetworkReachabilityStatus status) { __strong __typeof(weakSelf)strongSelf = weakSelf; strongSelf.networkReachabilityStatus = status; if (strongSelf.networkReachabilityStatusBlock) { strongSelf.networkReachabilityStatusBlock(status); } - + + return strongSelf; }; SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0),^{ SCNetworkReachabilityFlags flags; if (SCNetworkReachabilityGetFlags(self.networkReachability, &flags)) { AFPostReachabilityStatusChange(flags, callback); diff --git a/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h index c005efa8..9b966a57 100644 --- a/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h +++ b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h @@ -45,10 +45,10 @@ NS_ASSUME_NONNULL_BEGIN /** The certificates used to evaluate server trust according to the SSL pinning mode. - - By default, this property is set to any (`.cer`) certificates included in the target compiling AFNetworking. Note that if you are using AFNetworking as embedded framework, no certificates will be pinned by default. Use `certificatesInBundle` to load certificates from your target, and then create a new policy by calling `policyWithPinningMode:withPinnedCertificates`. Note that if pinning is enabled, `evaluateServerTrust:forDomain:` will return true if any pinned certificate matches. + + @see policyWithPinningMode:withPinnedCertificates: */ @property (nonatomic, strong, nullable) NSSet *pinnedCertificates; @@ -90,10 +90,14 @@ NS_ASSUME_NONNULL_BEGIN /** Creates and returns a security policy with the specified pinning mode. + + Certificates with the `.cer` extension found in the main bundle will be pinned. If you want more control over which certificates are pinned, please use `policyWithPinningMode:withPinnedCertificates:` instead. @param pinningMode The SSL pinning mode. @return A new security policy. + + @see -policyWithPinningMode:withPinnedCertificates: */ + (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode; @@ -104,7 +108,10 @@ NS_ASSUME_NONNULL_BEGIN @param pinnedCertificates The certificates to pin against. @return A new security policy. - */ + + @see +certificatesInBundle: + @see -pinnedCertificates +*/ + (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode withPinnedCertificates:(NSSet *)pinnedCertificates; ///------------------------------ diff --git a/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m index 043441a0..da199aa3 100644 --- a/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m +++ b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m @@ -60,7 +60,10 @@ static id AFPublicKeyForCertificate(NSData *certificate) { policy = SecPolicyCreateBasicX509(); __Require_noErr_Quiet(SecTrustCreateWithCertificates(allowedCertificate, policy, &allowedTrust), _out); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" __Require_noErr_Quiet(SecTrustEvaluate(allowedTrust, &result), _out); +#pragma clang diagnostic pop allowedPublicKey = (__bridge_transfer id)SecTrustCopyPublicKey(allowedTrust); @@ -83,7 +86,10 @@ static id AFPublicKeyForCertificate(NSData *certificate) { static BOOL AFServerTrustIsValid(SecTrustRef serverTrust) { BOOL isValid = NO; SecTrustResultType result; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" __Require_noErr_Quiet(SecTrustEvaluate(serverTrust, &result), _out); +#pragma clang diagnostic pop isValid = (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed); @@ -115,10 +121,11 @@ static BOOL AFServerTrustIsValid(SecTrustRef serverTrust) { SecTrustRef trust; __Require_noErr_Quiet(SecTrustCreateWithCertificates(certificates, policy, &trust), _out); - SecTrustResultType result; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" __Require_noErr_Quiet(SecTrustEvaluate(trust, &result), _out); - +#pragma clang diagnostic pop [trustChain addObject:(__bridge_transfer id)SecTrustCopyPublicKey(trust)]; _out: @@ -158,17 +165,6 @@ + (NSSet *)certificatesInBundle:(NSBundle *)bundle { return [NSSet setWithSet:certificates]; } -+ (NSSet *)defaultPinnedCertificates { - static NSSet *_defaultPinnedCertificates = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - _defaultPinnedCertificates = [self certificatesInBundle:bundle]; - }); - - return _defaultPinnedCertificates; -} - + (instancetype)defaultPolicy { AFSecurityPolicy *securityPolicy = [[self alloc] init]; securityPolicy.SSLPinningMode = AFSSLPinningModeNone; @@ -177,7 +173,8 @@ + (instancetype)defaultPolicy { } + (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode { - return [self policyWithPinningMode:pinningMode withPinnedCertificates:[self defaultPinnedCertificates]]; + NSSet *defaultPinnedCertificates = [self certificatesInBundle:[NSBundle mainBundle]]; + return [self policyWithPinningMode:pinningMode withPinnedCertificates:defaultPinnedCertificates]; } + (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode withPinnedCertificates:(NSSet *)pinnedCertificates { @@ -247,14 +244,11 @@ - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust if (self.SSLPinningMode == AFSSLPinningModeNone) { return self.allowInvalidCertificates || AFServerTrustIsValid(serverTrust); - } else if (!AFServerTrustIsValid(serverTrust) && !self.allowInvalidCertificates) { + } else if (!self.allowInvalidCertificates && !AFServerTrustIsValid(serverTrust)) { return NO; } switch (self.SSLPinningMode) { - case AFSSLPinningModeNone: - default: - return NO; case AFSSLPinningModeCertificate: { NSMutableArray *pinnedCertificates = [NSMutableArray array]; for (NSData *certificateData in self.pinnedCertificates) { @@ -290,6 +284,9 @@ - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust } return trustedPublicKeyCount > 0; } + + default: + return NO; } return NO; @@ -317,7 +314,7 @@ - (instancetype)initWithCoder:(NSCoder *)decoder { self.SSLPinningMode = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(SSLPinningMode))] unsignedIntegerValue]; self.allowInvalidCertificates = [decoder decodeBoolForKey:NSStringFromSelector(@selector(allowInvalidCertificates))]; self.validatesDomainName = [decoder decodeBoolForKey:NSStringFromSelector(@selector(validatesDomainName))]; - self.pinnedCertificates = [decoder decodeObjectOfClass:[NSArray class] forKey:NSStringFromSelector(@selector(pinnedCertificates))]; + self.pinnedCertificates = [decoder decodeObjectOfClass:[NSSet class] forKey:NSStringFromSelector(@selector(pinnedCertificates))]; return self; } diff --git a/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h index 694696b9..dd7cb457 100644 --- a/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h +++ b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h @@ -216,7 +216,7 @@ forHTTPHeaderField:(NSString *)field; @param block A block that defines a process of encoding parameters into a query string. This block returns the query string and takes three arguments: the request, the parameters to encode, and the error that occurred when attempting to encode parameters for the given request. */ -- (void)setQueryStringSerializationWithBlock:(nullable NSString * (^)(NSURLRequest *request, id parameters, NSError * __autoreleasing *error))block; +- (void)setQueryStringSerializationWithBlock:(nullable NSString * _Nullable (^)(NSURLRequest *request, id parameters, NSError * __autoreleasing *error))block; ///------------------------------- /// @name Creating Request Objects @@ -234,10 +234,10 @@ forHTTPHeaderField:(NSString *)field; @return An `NSMutableURLRequest` object. */ -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(nullable id)parameters - error:(NSError * _Nullable __autoreleasing *)error; +- (nullable NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(nullable id)parameters + error:(NSError * _Nullable __autoreleasing *)error; /** Creates an `NSMutableURLRequest` object with the specified HTTP method and URLString, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 @@ -278,7 +278,7 @@ forHTTPHeaderField:(NSString *)field; #pragma mark - /** - The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:`. + The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:`. */ @protocol AFMultipartFormData diff --git a/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m index a4d5d9df..f1d9ee18 100644 --- a/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m +++ b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m @@ -217,12 +217,13 @@ - (instancetype)init { }]; [self setValue:[acceptLanguagesComponents componentsJoinedByString:@", "] forHTTPHeaderField:@"Accept-Language"]; + // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 NSString *userAgent = nil; #if TARGET_OS_IOS - // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; +#elif TARGET_OS_TV + userAgent = [NSString stringWithFormat:@"%@/%@ (%@; tvOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; #elif TARGET_OS_WATCH - // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 userAgent = [NSString stringWithFormat:@"%@/%@ (%@; watchOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[WKInterfaceDevice currentDevice] model], [[WKInterfaceDevice currentDevice] systemVersion], [[WKInterfaceDevice currentDevice] screenScale]]; #elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; @@ -312,7 +313,7 @@ - (NSDictionary *)HTTPRequestHeaders { - (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field { - dispatch_barrier_async(self.requestHeaderModificationQueue, ^{ + dispatch_barrier_sync(self.requestHeaderModificationQueue, ^{ [self.mutableHTTPRequestHeaders setValue:value forKey:field]; }); } @@ -334,7 +335,7 @@ - (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username } - (void)clearAuthorizationHeader { - dispatch_barrier_async(self.requestHeaderModificationQueue, ^{ + dispatch_barrier_sync(self.requestHeaderModificationQueue, ^{ [self.mutableHTTPRequestHeaders removeObjectForKey:@"Authorization"]; }); } @@ -367,10 +368,8 @@ - (NSMutableURLRequest *)requestWithMethod:(NSString *)method NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url]; mutableRequest.HTTPMethod = method; - for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { - if ([self.mutableObservedChangedKeyPaths containsObject:keyPath]) { - [mutableRequest setValue:[self valueForKeyPath:keyPath] forKey:keyPath]; - } + for (NSString *keyPath in self.mutableObservedChangedKeyPaths) { + [mutableRequest setValue:[self valueForKeyPath:keyPath] forKey:keyPath]; } mutableRequest = [[self requestBySerializingRequest:mutableRequest withParameters:parameters error:error] mutableCopy]; @@ -571,7 +570,7 @@ - (void)encodeWithCoder:(NSCoder *)coder { dispatch_sync(self.requestHeaderModificationQueue, ^{ [coder encodeObject:self.mutableHTTPRequestHeaders forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))]; }); - [coder encodeInteger:self.queryStringSerializationStyle forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))]; + [coder encodeObject:@(self.queryStringSerializationStyle) forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))]; } #pragma mark - NSCopying @@ -1295,7 +1294,7 @@ - (instancetype)initWithCoder:(NSCoder *)decoder { - (void)encodeWithCoder:(NSCoder *)coder { [super encodeWithCoder:coder]; - [coder encodeInteger:self.writingOptions forKey:NSStringFromSelector(@selector(writingOptions))]; + [coder encodeObject:@(self.writingOptions) forKey:NSStringFromSelector(@selector(writingOptions))]; } #pragma mark - NSCopying @@ -1381,7 +1380,7 @@ - (instancetype)initWithCoder:(NSCoder *)decoder { - (void)encodeWithCoder:(NSCoder *)coder { [super encodeWithCoder:coder]; - [coder encodeInteger:self.format forKey:NSStringFromSelector(@selector(format))]; + [coder encodeObject:@(self.format) forKey:NSStringFromSelector(@selector(format))]; [coder encodeObject:@(self.writeOptions) forKey:NSStringFromSelector(@selector(writeOptions))]; } diff --git a/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h index 24800a38..56a4d28a 100644 --- a/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h +++ b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h @@ -24,6 +24,11 @@ NS_ASSUME_NONNULL_BEGIN +/** + Recursively removes `NSNull` values from a JSON object. +*/ +FOUNDATION_EXPORT id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingOptions readingOptions); + /** The `AFURLResponseSerialization` protocol is adopted by an object that decodes data into a more useful object representation, according to details in the server response. Response serializers may additionally perform validation on the incoming response and data. @@ -57,8 +62,6 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)init; -@property (nonatomic, assign) NSStringEncoding stringEncoding DEPRECATED_MSG_ATTRIBUTE("The string encoding is never used. AFHTTPResponseSerializer only validates status codes and content types but does not try to decode the received data in any way."); - /** Creates and returns a serializer with default configuration. */ diff --git a/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m index b7be3d40..2715a1b3 100755 --- a/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m +++ b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m @@ -60,11 +60,13 @@ static BOOL AFErrorOrUnderlyingErrorHasCodeInDomain(NSError *error, NSInteger co return NO; } -static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingOptions readingOptions) { +id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingOptions readingOptions) { if ([JSONObject isKindOfClass:[NSArray class]]) { NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:[(NSArray *)JSONObject count]]; for (id value in (NSArray *)JSONObject) { - [mutableArray addObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions)]; + if (![value isEqual:[NSNull null]]) { + [mutableArray addObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions)]; + } } return (readingOptions & NSJSONReadingMutableContainers) ? mutableArray : [NSArray arrayWithArray:mutableArray]; @@ -112,7 +114,7 @@ - (BOOL)validateResponse:(NSHTTPURLResponse *)response BOOL responseIsValid = YES; NSError *validationError = nil; - if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { + if ([response isKindOfClass:[NSHTTPURLResponse class]]) { if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]] && !([response MIMEType] == nil && [data length] == 0)) { @@ -180,7 +182,7 @@ - (instancetype)initWithCoder:(NSCoder *)decoder { } self.acceptableStatusCodes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; - self.acceptableContentTypes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; + self.acceptableContentTypes = [decoder decodeObjectOfClass:[NSSet class] forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; return self; } @@ -269,6 +271,10 @@ - (id)responseObjectForResponse:(NSURLResponse *)response #pragma mark - NSSecureCoding ++ (BOOL)supportsSecureCoding { + return YES; +} + - (instancetype)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (!self) { @@ -486,6 +492,10 @@ - (id)responseObjectForResponse:(NSURLResponse *)response #pragma mark - NSSecureCoding ++ (BOOL)supportsSecureCoding { + return YES; +} + - (instancetype)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (!self) { @@ -702,6 +712,10 @@ - (id)responseObjectForResponse:(NSURLResponse *)response #pragma mark - NSSecureCoding ++ (BOOL)supportsSecureCoding { + return YES; +} + - (instancetype)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (!self) { @@ -788,13 +802,18 @@ - (id)responseObjectForResponse:(NSURLResponse *)response #pragma mark - NSSecureCoding ++ (BOOL)supportsSecureCoding { + return YES; +} + - (instancetype)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (!self) { return nil; } - self.responseSerializers = [decoder decodeObjectOfClass:[NSArray class] forKey:NSStringFromSelector(@selector(responseSerializers))]; + NSSet *classes = [NSSet setWithArray:@[[NSArray class], [AFHTTPResponseSerializer class]]]; + self.responseSerializers = [decoder decodeObjectOfClasses:classes forKey:NSStringFromSelector(@selector(responseSerializers))]; return self; } diff --git a/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h index e7ae0d8e..399f6495 100644 --- a/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h +++ b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h @@ -65,7 +65,7 @@ ### `NSURLSessionDownloadDelegate` - `URLSession:downloadTask:didFinishDownloadingToURL:` - - `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:` + - `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:` - `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:` If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. @@ -165,19 +165,6 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nonatomic, strong, nullable) dispatch_group_t completionGroup; -///--------------------------------- -/// @name Working Around System Bugs -///--------------------------------- - -/** - Whether to attempt to retry creation of upload tasks for background sessions when initial call returns `nil`. `NO` by default. - - @bug As of iOS 7.0, there is a bug where upload tasks created for background tasks are sometimes `nil`. As a workaround, if this property is `YES`, AFNetworking will follow Apple's recommendation to try creating the task again. - - @see https://github.com/AFNetworking/AFNetworking/issues/1675 - */ -@property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions; - ///--------------------- /// @name Initialization ///--------------------- @@ -192,25 +179,17 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; /** - Invalidates the managed session, optionally canceling pending tasks. - - @param cancelPendingTasks Whether or not to cancel pending tasks. + Invalidates the managed session, optionally canceling pending tasks and optionally resets given session. + + @param cancelPendingTasks Whether or not to cancel pending tasks. + @param resetSession Whether or not to reset the session of the manager. */ -- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks; +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks resetSession:(BOOL)resetSession; ///------------------------- /// @name Running Data Tasks ///------------------------- -/** - Creates an `NSURLSessionDataTask` with the specified request. - - @param request The HTTP request for the request. - @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. - */ -- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request - completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler DEPRECATED_ATTRIBUTE; - /** Creates an `NSURLSessionDataTask` with the specified request. @@ -336,6 +315,11 @@ NS_ASSUME_NONNULL_BEGIN Sets a block to be executed when a connection level authentication challenge has occurred, as handled by the `NSURLSessionDelegate` method `URLSession:didReceiveChallenge:completionHandler:`. @param block A block object to be executed when a connection level authentication challenge has occurred. The block returns the disposition of the authentication challenge, and takes three arguments: the session, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + + @warning Implementing a session authentication challenge handler yourself totally bypasses AFNetworking's security policy defined in `AFSecurityPolicy`. Make sure you fully understand the implications before implementing a custom session authentication challenge handler. If you do not want to bypass AFNetworking's security policy, use `-setAuthenticationChallengeHandler:` instead. + + @see -securityPolicy + @see -setAuthenticationChallengeHandler: */ - (void)setSessionDidReceiveAuthenticationChallengeBlock:(nullable NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * _Nullable __autoreleasing * _Nullable credential))block; @@ -359,10 +343,23 @@ NS_ASSUME_NONNULL_BEGIN /** Sets a block to be executed when a session task has received a request specific authentication challenge, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didReceiveChallenge:completionHandler:`. - - @param block A block object to be executed when a session task has received a request specific authentication challenge. The block returns the disposition of the authentication challenge, and takes four arguments: the session, the task, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. - */ -- (void)setTaskDidReceiveAuthenticationChallengeBlock:(nullable NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * _Nullable __autoreleasing * _Nullable credential))block; + + @param authenticationChallengeHandler A block object to be executed when a session task has received a request specific authentication challenge. + + When implementing an authentication challenge handler, you should check the authentication method first (`challenge.protectionSpace.authenticationMethod `) to decide if you want to handle the authentication challenge yourself or if you want AFNetworking to handle it. If you want AFNetworking to handle the authentication challenge, just return `@(NSURLSessionAuthChallengePerformDefaultHandling)`. For example, you certainly want AFNetworking to handle certificate validation (i.e. authentication method == `NSURLAuthenticationMethodServerTrust`) as defined by the security policy. If you want to handle the challenge yourself, you have four options: + + 1. Return `nil` from the authentication challenge handler. You **MUST** call the completion handler with a disposition and credentials yourself. Use this if you need to present a user interface to let the user enter their credentials. + 2. Return an `NSError` object from the authentication challenge handler. You **MUST NOT** call the completion handler when returning an `NSError `. The returned error will be reported in the completion handler of the task. Use this if you need to abort an authentication challenge with a specific error. + 3. Return an `NSURLCredential` object from the authentication challenge handler. You **MUST NOT** call the completion handler when returning an `NSURLCredential`. The returned credentials will be used to fulfil the challenge. Use this when you can get credentials without presenting a user interface. + 4. Return an `NSNumber` object wrapping an `NSURLSessionAuthChallengeDisposition`. Supported values are `@(NSURLSessionAuthChallengePerformDefaultHandling)`, `@(NSURLSessionAuthChallengeCancelAuthenticationChallenge)` and `@(NSURLSessionAuthChallengeRejectProtectionSpace)`. You **MUST NOT** call the completion handler when returning an `NSNumber`. + + If you return anything else from the authentication challenge handler, an exception will be thrown. + + For more information about how URL sessions handle the different types of authentication challenges, see [NSURLSession](https://developer.apple.com/reference/foundation/nsurlsession?language=objc) and [URL Session Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html). + + @see -securityPolicy + */ +- (void)setAuthenticationChallengeHandler:(id (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, void (^completionHandler)(NSURLSessionAuthChallengeDisposition , NSURLCredential * _Nullable)))authenticationChallengeHandler; /** Sets a block to be executed periodically to track upload progress, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:`. @@ -378,6 +375,14 @@ NS_ASSUME_NONNULL_BEGIN */ - (void)setTaskDidCompleteBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, NSError * _Nullable error))block; +/** + Sets a block to be executed when metrics are finalized related to a specific task, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didFinishCollectingMetrics:`. + + @param block A block object to be executed when a session task is completed. The block has no return value, and takes three arguments: the session, the task, and any metrics that were collected in the process of executing the task. + */ +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +- (void)setTaskDidFinishCollectingMetricsBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, NSURLSessionTaskMetrics * _Nullable metrics))block AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)); +#endif ///------------------------------------------- /// @name Setting Data Task Delegate Callbacks ///------------------------------------------- @@ -411,7 +416,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)setDataTaskWillCacheResponseBlock:(nullable NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block; /** - Sets a block to be executed once all messages enqueued for a session have been delivered, as handled by the `NSURLSessionDataDelegate` method `URLSessionDidFinishEventsForBackgroundURLSession:`. + Sets a block to be executed once all messages enqueued for a session have been delivered, as handled by the `NSURLSessionDelegate` method `URLSessionDidFinishEventsForBackgroundURLSession:`. @param block A block object to be executed once all messages enqueued for a session have been delivered. The block has no return value and takes a single argument: the session. */ @@ -429,7 +434,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)setDownloadTaskDidFinishDownloadingBlock:(nullable NSURL * _Nullable (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block; /** - Sets a block to be executed periodically to track download progress, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:`. + Sets a block to be executed periodically to track download progress, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:`. @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes five arguments: the session, the download task, the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the session manager operation queue. */ @@ -468,6 +473,11 @@ FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidSuspendNotification; */ FOUNDATION_EXPORT NSString * const AFURLSessionDidInvalidateNotification; +/** + Posted when a session download task finished moving the temporary download file to a specified destination successfully. + */ +FOUNDATION_EXPORT NSString * const AFURLSessionDownloadTaskDidMoveFileSuccessfullyNotification; + /** Posted when a session download task encountered an error when moving the temporary download file to a specified destination. */ @@ -498,4 +508,9 @@ FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteAssetPathKey; */ FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteErrorKey; +/** + The session task metrics taken from the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidCompleteSessionTaskMetrics` + */ +FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteSessionTaskMetrics; + NS_ASSUME_NONNULL_END diff --git a/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m index aeb1af39..c8b6810e 100644 --- a/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m +++ b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m @@ -22,33 +22,6 @@ #import "AFURLSessionManager.h" #import -#ifndef NSFoundationVersionNumber_iOS_8_0 -#define NSFoundationVersionNumber_With_Fixed_5871104061079552_bug 1140.11 -#else -#define NSFoundationVersionNumber_With_Fixed_5871104061079552_bug NSFoundationVersionNumber_iOS_8_0 -#endif - -static dispatch_queue_t url_session_manager_creation_queue() { - static dispatch_queue_t af_url_session_manager_creation_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_url_session_manager_creation_queue = dispatch_queue_create("com.alamofire.networking.session.manager.creation", DISPATCH_QUEUE_SERIAL); - }); - - return af_url_session_manager_creation_queue; -} - -static void url_session_manager_create_task_safely(dispatch_block_t block) { - if (NSFoundationVersionNumber < NSFoundationVersionNumber_With_Fixed_5871104061079552_bug) { - // Fix of bug - // Open Radar:http://openradar.appspot.com/radar?id=5871104061079552 (status: Fixed in iOS8) - // Issue about:https://github.com/AFNetworking/AFNetworking/issues/2093 - dispatch_sync(url_session_manager_creation_queue(), block); - } else { - block(); - } -} - static dispatch_queue_t url_session_manager_processing_queue() { static dispatch_queue_t af_url_session_manager_processing_queue; static dispatch_once_t onceToken; @@ -73,6 +46,7 @@ static dispatch_group_t url_session_manager_completion_group() { NSString * const AFNetworkingTaskDidCompleteNotification = @"com.alamofire.networking.task.complete"; NSString * const AFNetworkingTaskDidSuspendNotification = @"com.alamofire.networking.task.suspend"; NSString * const AFURLSessionDidInvalidateNotification = @"com.alamofire.networking.session.invalidate"; +NSString * const AFURLSessionDownloadTaskDidMoveFileSuccessfullyNotification = @"com.alamofire.networking.session.download.file-manager-succeed"; NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification = @"com.alamofire.networking.session.download.file-manager-error"; NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; @@ -80,21 +54,24 @@ static dispatch_group_t url_session_manager_completion_group() { NSString * const AFNetworkingTaskDidCompleteResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; NSString * const AFNetworkingTaskDidCompleteErrorKey = @"com.alamofire.networking.task.complete.error"; NSString * const AFNetworkingTaskDidCompleteAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; +NSString * const AFNetworkingTaskDidCompleteSessionTaskMetrics = @"com.alamofire.networking.complete.sessiontaskmetrics"; static NSString * const AFURLSessionManagerLockName = @"com.alamofire.networking.session.manager.lock"; -static NSUInteger const AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask = 3; - typedef void (^AFURLSessionDidBecomeInvalidBlock)(NSURLSession *session, NSError *error); typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); typedef NSURLRequest * (^AFURLSessionTaskWillPerformHTTPRedirectionBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request); typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionTaskDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); +typedef id (^AFURLSessionTaskAuthenticationChallengeBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, void (^completionHandler)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential)); typedef void (^AFURLSessionDidFinishEventsForBackgroundURLSessionBlock)(NSURLSession *session); typedef NSInputStream * (^AFURLSessionTaskNeedNewBodyStreamBlock)(NSURLSession *session, NSURLSessionTask *task); typedef void (^AFURLSessionTaskDidSendBodyDataBlock)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); typedef void (^AFURLSessionTaskDidCompleteBlock)(NSURLSession *session, NSURLSessionTask *task, NSError *error); +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +typedef void (^AFURLSessionTaskDidFinishCollectingMetricsBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLSessionTaskMetrics * metrics) AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)); +#endif typedef NSURLSessionResponseDisposition (^AFURLSessionDataTaskDidReceiveResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response); typedef void (^AFURLSessionDataTaskDidBecomeDownloadTaskBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask); @@ -108,7 +85,6 @@ static dispatch_group_t url_session_manager_completion_group() { typedef void (^AFURLSessionTaskCompletionHandler)(NSURLResponse *response, id responseObject, NSError *error); - #pragma mark - @interface AFURLSessionManagerTaskDelegate : NSObject @@ -118,6 +94,9 @@ - (instancetype)initWithTask:(NSURLSessionTask *)task; @property (nonatomic, strong) NSProgress *uploadProgress; @property (nonatomic, strong) NSProgress *downloadProgress; @property (nonatomic, copy) NSURL *downloadFileURL; +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +@property (nonatomic, strong) NSURLSessionTaskMetrics *sessionTaskMetrics AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)); +#endif @property (nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; @property (nonatomic, copy) AFURLSessionTaskProgressBlock uploadProgressBlock; @property (nonatomic, copy) AFURLSessionTaskProgressBlock downloadProgressBlock; @@ -149,7 +128,7 @@ - (instancetype)initWithTask:(NSURLSessionTask *)task { [weakTask suspend]; }; #if AF_CAN_USE_AT_AVAILABLE - if (@available(iOS 9, macOS 10.11, *)) + if (@available(macOS 10.11, *)) #else if ([progress respondsToSelector:@selector(setResumingHandler:)]) #endif @@ -187,17 +166,20 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(N } } +static const void * const AuthenticationChallengeErrorKey = &AuthenticationChallengeErrorKey; + #pragma mark - NSURLSessionTaskDelegate - (void)URLSession:(__unused NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { + error = objc_getAssociatedObject(task, AuthenticationChallengeErrorKey) ?: error; __strong AFURLSessionManager *manager = self.manager; __block id responseObject = nil; - __block NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; userInfo[AFNetworkingTaskDidCompleteResponseSerializerKey] = manager.responseSerializer; //Performance Improvement from #2672 @@ -208,6 +190,14 @@ - (void)URLSession:(__unused NSURLSession *)session self.mutableData = nil; } +#if AF_CAN_USE_AT_AVAILABLE && AF_CAN_INCLUDE_SESSION_TASK_METRICS + if (@available(iOS 10, macOS 10.12, watchOS 3, tvOS 10, *)) { + if (self.sessionTaskMetrics) { + userInfo[AFNetworkingTaskDidCompleteSessionTaskMetrics] = self.sessionTaskMetrics; + } + } +#endif + if (self.downloadFileURL) { userInfo[AFNetworkingTaskDidCompleteAssetPathKey] = self.downloadFileURL; } else if (data) { @@ -256,6 +246,14 @@ - (void)URLSession:(__unused NSURLSession *)session } } +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)) { + self.sessionTaskMetrics = metrics; +} +#endif + #pragma mark - NSURLSessionDataDelegate - (void)URLSession:(__unused NSURLSession *)session @@ -309,6 +307,8 @@ - (void)URLSession:(NSURLSession *)session if (![[NSFileManager defaultManager] moveItemAtURL:location toURL:self.downloadFileURL error:&fileManagerError]) { [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:fileManagerError.userInfo]; + } else { + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidMoveFileSuccessfullyNotification object:downloadTask userInfo:nil]; } } } @@ -380,7 +380,7 @@ + (void)load { 8) Set the current class to the super class, and repeat steps 3-8 */ NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration]; - NSURLSession * session = [NSURLSession sessionWithConfiguration:configuration]; + NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration]; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wnonnull" NSURLSessionDataTask *localDataTask = [session dataTaskWithURL:nil]; @@ -456,10 +456,13 @@ @interface AFURLSessionManager () @property (readwrite, nonatomic, copy) AFURLSessionDidReceiveAuthenticationChallengeBlock sessionDidReceiveAuthenticationChallenge; @property (readwrite, nonatomic, copy) AFURLSessionDidFinishEventsForBackgroundURLSessionBlock didFinishEventsForBackgroundURLSession AF_API_UNAVAILABLE(macos); @property (readwrite, nonatomic, copy) AFURLSessionTaskWillPerformHTTPRedirectionBlock taskWillPerformHTTPRedirection; -@property (readwrite, nonatomic, copy) AFURLSessionTaskDidReceiveAuthenticationChallengeBlock taskDidReceiveAuthenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLSessionTaskAuthenticationChallengeBlock authenticationChallengeHandler; @property (readwrite, nonatomic, copy) AFURLSessionTaskNeedNewBodyStreamBlock taskNeedNewBodyStream; @property (readwrite, nonatomic, copy) AFURLSessionTaskDidSendBodyDataBlock taskDidSendBodyData; @property (readwrite, nonatomic, copy) AFURLSessionTaskDidCompleteBlock taskDidComplete; +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidFinishCollectingMetricsBlock taskDidFinishCollectingMetrics AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)); +#endif @property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveResponseBlock dataTaskDidReceiveResponse; @property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidBecomeDownloadTaskBlock dataTaskDidBecomeDownloadTask; @property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveDataBlock dataTaskDidReceiveData; @@ -490,8 +493,6 @@ - (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)config self.operationQueue = [[NSOperationQueue alloc] init]; self.operationQueue.maxConcurrentOperationCount = 1; - self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue]; - self.responseSerializer = [AFJSONResponseSerializer serializer]; self.securityPolicy = [AFSecurityPolicy defaultPolicy]; @@ -528,6 +529,19 @@ - (void)dealloc { #pragma mark - +- (NSURLSession *)session { + + @synchronized (self) { + if (!_session) { + _session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue]; + } + } + return _session; +} + +#pragma mark - + + - (NSString *)taskDescriptionForSessionTasks { return [NSString stringWithFormat:@"%p", self]; } @@ -683,12 +697,15 @@ - (NSArray *)downloadTasks { #pragma mark - -- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks { +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks resetSession:(BOOL)resetSession { if (cancelPendingTasks) { [self.session invalidateAndCancel]; } else { [self.session finishTasksAndInvalidate]; } + if (resetSession) { + self.session = nil; + } } #pragma mark - @@ -712,21 +729,12 @@ - (void)removeNotificationObserverForTask:(NSURLSessionTask *)task { #pragma mark - -- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - return [self dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:completionHandler]; -} - - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgressBlock downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgressBlock completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler { - __block NSURLSessionDataTask *dataTask = nil; - url_session_manager_create_task_safely(^{ - dataTask = [self.session dataTaskWithRequest:request]; - }); + NSURLSessionDataTask *dataTask = [self.session dataTaskWithRequest:request]; [self addDelegateForDataTask:dataTask uploadProgress:uploadProgressBlock downloadProgress:downloadProgressBlock completionHandler:completionHandler]; @@ -740,17 +748,7 @@ - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request progress:(void (^)(NSProgress *uploadProgress)) uploadProgressBlock completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler { - __block NSURLSessionUploadTask *uploadTask = nil; - url_session_manager_create_task_safely(^{ - uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; - - // uploadTask may be nil on iOS7 because uploadTaskWithRequest:fromFile: may return nil despite being documented as nonnull (https://devforums.apple.com/message/926113#926113) - if (!uploadTask && self.attemptsToRecreateUploadTasksForBackgroundSessions && self.session.configuration.identifier) { - for (NSUInteger attempts = 0; !uploadTask && attempts < AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask; attempts++) { - uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; - } - } - }); + NSURLSessionUploadTask *uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; if (uploadTask) { [self addDelegateForUploadTask:uploadTask @@ -766,11 +764,8 @@ - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request progress:(void (^)(NSProgress *uploadProgress)) uploadProgressBlock completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler { - __block NSURLSessionUploadTask *uploadTask = nil; - url_session_manager_create_task_safely(^{ - uploadTask = [self.session uploadTaskWithRequest:request fromData:bodyData]; - }); - + NSURLSessionUploadTask *uploadTask = [self.session uploadTaskWithRequest:request fromData:bodyData]; + [self addDelegateForUploadTask:uploadTask progress:uploadProgressBlock completionHandler:completionHandler]; return uploadTask; @@ -780,10 +775,7 @@ - (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)reques progress:(void (^)(NSProgress *uploadProgress)) uploadProgressBlock completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler { - __block NSURLSessionUploadTask *uploadTask = nil; - url_session_manager_create_task_safely(^{ - uploadTask = [self.session uploadTaskWithStreamedRequest:request]; - }); + NSURLSessionUploadTask *uploadTask = [self.session uploadTaskWithStreamedRequest:request]; [self addDelegateForUploadTask:uploadTask progress:uploadProgressBlock completionHandler:completionHandler]; @@ -797,11 +789,8 @@ - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler { - __block NSURLSessionDownloadTask *downloadTask = nil; - url_session_manager_create_task_safely(^{ - downloadTask = [self.session downloadTaskWithRequest:request]; - }); - + NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithRequest:request]; + [self addDelegateForDownloadTask:downloadTask progress:downloadProgressBlock destination:destination completionHandler:completionHandler]; return downloadTask; @@ -812,10 +801,7 @@ - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler { - __block NSURLSessionDownloadTask *downloadTask = nil; - url_session_manager_create_task_safely(^{ - downloadTask = [self.session downloadTaskWithResumeData:resumeData]; - }); + NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithResumeData:resumeData]; [self addDelegateForDownloadTask:downloadTask progress:downloadProgressBlock destination:destination completionHandler:completionHandler]; @@ -857,10 +843,6 @@ - (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession self.taskWillPerformHTTPRedirection = block; } -- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { - self.taskDidReceiveAuthenticationChallenge = block; -} - - (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block { self.taskDidSendBodyData = block; } @@ -869,6 +851,12 @@ - (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTas self.taskDidComplete = block; } +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +- (void)setTaskDidFinishCollectingMetricsBlock:(void (^)(NSURLSession * _Nonnull, NSURLSessionTask * _Nonnull, NSURLSessionTaskMetrics * _Nullable))block AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)) { + self.taskDidFinishCollectingMetrics = block; +} +#endif + #pragma mark - - (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block { @@ -908,7 +896,9 @@ - (NSString *)description { } - (BOOL)respondsToSelector:(SEL)selector { - if (selector == @selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)) { + if (selector == @selector(URLSession:didReceiveChallenge:completionHandler:)) { + return self.sessionDidReceiveAuthenticationChallenge != nil; + } else if (selector == @selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)) { return self.taskWillPerformHTTPRedirection != nil; } else if (selector == @selector(URLSession:dataTask:didReceiveResponse:completionHandler:)) { return self.dataTaskDidReceiveResponse != nil; @@ -940,27 +930,10 @@ - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { - NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; - __block NSURLCredential *credential = nil; + NSAssert(self.sessionDidReceiveAuthenticationChallenge != nil, @"`respondsToSelector:` implementation forces `URLSession:didReceiveChallenge:completionHandler:` to be called only if `self.sessionDidReceiveAuthenticationChallenge` is not nil"); - if (self.sessionDidReceiveAuthenticationChallenge) { - disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential); - } else { - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { - credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - if (credential) { - disposition = NSURLSessionAuthChallengeUseCredential; - } else { - disposition = NSURLSessionAuthChallengePerformDefaultHandling; - } - } else { - disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; - } - } else { - disposition = NSURLSessionAuthChallengePerformDefaultHandling; - } - } + NSURLCredential *credential = nil; + NSURLSessionAuthChallengeDisposition disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential); if (completionHandler) { completionHandler(disposition, credential); @@ -991,21 +964,40 @@ - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { + BOOL evaluateServerTrust = NO; NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; - __block NSURLCredential *credential = nil; + NSURLCredential *credential = nil; - if (self.taskDidReceiveAuthenticationChallenge) { - disposition = self.taskDidReceiveAuthenticationChallenge(session, task, challenge, &credential); + if (self.authenticationChallengeHandler) { + id result = self.authenticationChallengeHandler(session, task, challenge, completionHandler); + if (result == nil) { + return; + } else if ([result isKindOfClass:NSError.class]) { + objc_setAssociatedObject(task, AuthenticationChallengeErrorKey, result, OBJC_ASSOCIATION_RETAIN); + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + } else if ([result isKindOfClass:NSURLCredential.class]) { + credential = result; + disposition = NSURLSessionAuthChallengeUseCredential; + } else if ([result isKindOfClass:NSNumber.class]) { + disposition = [result integerValue]; + NSAssert(disposition == NSURLSessionAuthChallengePerformDefaultHandling || disposition == NSURLSessionAuthChallengeCancelAuthenticationChallenge || disposition == NSURLSessionAuthChallengeRejectProtectionSpace, @""); + evaluateServerTrust = disposition == NSURLSessionAuthChallengePerformDefaultHandling && [challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]; + } else { + @throw [NSException exceptionWithName:@"Invalid Return Value" reason:@"The return value from the authentication challenge handler must be nil, an NSError, an NSURLCredential or an NSNumber." userInfo:nil]; + } } else { - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { - disposition = NSURLSessionAuthChallengeUseCredential; - credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - } else { - disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; - } + evaluateServerTrust = [challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]; + } + + if (evaluateServerTrust) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + disposition = NSURLSessionAuthChallengeUseCredential; + credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; } else { - disposition = NSURLSessionAuthChallengePerformDefaultHandling; + objc_setAssociatedObject(task, AuthenticationChallengeErrorKey, + [self serverTrustErrorForServerTrust:challenge.protectionSpace.serverTrust url:task.currentRequest.URL], + OBJC_ASSOCIATION_RETAIN); + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; } } @@ -1014,6 +1006,31 @@ - (void)URLSession:(NSURLSession *)session } } +- (nonnull NSError *)serverTrustErrorForServerTrust:(nullable SecTrustRef)serverTrust url:(nullable NSURL *)url +{ + NSBundle *CFNetworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.CFNetwork"]; + NSString *defaultValue = @"The certificate for this server is invalid. You might be connecting to a server that is pretending to be “%@” which could put your confidential information at risk."; + NSString *descriptionFormat = NSLocalizedStringWithDefaultValue(@"Err-1202.w", nil, CFNetworkBundle, defaultValue, @"") ?: defaultValue; + NSString *localizedDescription = [descriptionFormat componentsSeparatedByString:@"%@"].count <= 2 ? [NSString localizedStringWithFormat:descriptionFormat, url.host] : descriptionFormat; + NSMutableDictionary *userInfo = [@{ + NSLocalizedDescriptionKey: localizedDescription + } mutableCopy]; + + if (serverTrust) { + userInfo[NSURLErrorFailingURLPeerTrustErrorKey] = (__bridge id)serverTrust; + } + + if (url) { + userInfo[NSURLErrorFailingURLErrorKey] = url; + + if (url.absoluteString) { + userInfo[NSURLErrorFailingURLStringErrorKey] = url.absoluteString; + } + } + + return [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorServerCertificateUntrusted userInfo:userInfo]; +} + - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task needNewBodyStream:(void (^)(NSInputStream *bodyStream))completionHandler @@ -1039,9 +1056,9 @@ - (void)URLSession:(NSURLSession *)session { int64_t totalUnitCount = totalBytesExpectedToSend; - if(totalUnitCount == NSURLSessionTransferSizeUnknown) { + if (totalUnitCount == NSURLSessionTransferSizeUnknown) { NSString *contentLength = [task.originalRequest valueForHTTPHeaderField:@"Content-Length"]; - if(contentLength) { + if (contentLength) { totalUnitCount = (int64_t) [contentLength longLongValue]; } } @@ -1075,6 +1092,23 @@ - (void)URLSession:(NSURLSession *)session } } +#if AF_CAN_INCLUDE_SESSION_TASK_METRICS +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10)) +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; + // Metrics may fire after URLSession:task:didCompleteWithError: is called, delegate may be nil + if (delegate) { + [delegate URLSession:session task:task didFinishCollectingMetrics:metrics]; + } + + if (self.taskDidFinishCollectingMetrics) { + self.taskDidFinishCollectingMetrics(session, task, metrics); + } +} +#endif + #pragma mark - NSURLSessionDataDelegate - (void)URLSession:(NSURLSession *)session @@ -1162,6 +1196,8 @@ - (void)URLSession:(NSURLSession *)session if (![[NSFileManager defaultManager] moveItemAtURL:location toURL:fileURL error:&error]) { [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:error.userInfo]; + } else { + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidMoveFileSuccessfullyNotification object:downloadTask userInfo:nil]; } return; diff --git a/Pods/AFNetworking/LICENSE b/Pods/AFNetworking/LICENSE index d7076267..f611f42f 100644 --- a/Pods/AFNetworking/LICENSE +++ b/Pods/AFNetworking/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) +Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Pods/AFNetworking/README.md b/Pods/AFNetworking/README.md index 6a7d2cd1..129577d6 100644 --- a/Pods/AFNetworking/README.md +++ b/Pods/AFNetworking/README.md @@ -1,26 +1,32 @@ +# AFNetworking is Deprecated + +As of Jan. 17, 2023, AFNetworking is deprecated and there will be no further releases. This repo will remain online in perpetuity as an archive. There are a couple options for continued AFNetworking use: + +1. Copy AFNetworking into your project and compile it directly. This gives you full control over the code. +2. Fork AFNetworking and use the fork in your dependency manager. There will be no official forks but anyone can fork at any time and can even publish those forks under a different name, in accordance with AFNetworking's license. + +Moving forward, Alamofire is the suggested migration path for networking in modern Swift. Anyone who needs help making that migration is welcome to ask on [StackOverflow](https://stackoverflow.com) and tag `alamofire` and `afnetworking`, or open a discussion on Alamofire's [GitHub Discussions](https://github.com/Alamofire/Alamofire/discussions) regarding any migration issues or missing features. + +--- +

AFNetworking

-[![Build Status](https://travis-ci.org/AFNetworking/AFNetworking.svg)](https://travis-ci.org/AFNetworking/AFNetworking) -[![codecov.io](https://codecov.io/github/AFNetworking/AFNetworking/coverage.svg?branch=master)](https://codecov.io/github/AFNetworking/AFNetworking?branch=master) +[![Build Status](https://github.com/AFNetworking/AFNetworking/workflows/AFNetworking%20CI/badge.svg?branch=master)](https://github.com/AFNetworking/AFNetworking/actions) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/AFNetworking.svg)](https://img.shields.io/cocoapods/v/AFNetworking.svg) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platform](https://img.shields.io/cocoapods/p/AFNetworking.svg?style=flat)](http://cocoadocs.org/docsets/AFNetworking) [![Twitter](https://img.shields.io/badge/twitter-@AFNetworking-blue.svg?style=flat)](http://twitter.com/AFNetworking) -AFNetworking is a delightful networking library for iOS, macOS, watchOS, and tvOS. It's built on top of the [Foundation URL Loading System](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html), extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. +AFNetworking is a delightful networking library for iOS, macOS, watchOS, and tvOS. It's built on top of the [Foundation URL Loading System](https://developer.apple.com/documentation/foundation/url_loading_system), extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac. -Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did! - ## How To Get Started - [Download AFNetworking](https://github.com/AFNetworking/AFNetworking/archive/master.zip) and try out the included Mac and iPhone example apps - Read the ["Getting Started" guide](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking), [FAQ](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ), or [other articles on the Wiki](https://github.com/AFNetworking/AFNetworking/wiki) -- Check out the [documentation](http://cocoadocs.org/docsets/AFNetworking/) for a comprehensive look at all of the APIs available in AFNetworking -- Read the [AFNetworking 3.0 Migration Guide](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-3.0-Migration-Guide) for an overview of the architectural changes from 2.0. ## Communication @@ -31,65 +37,47 @@ Choose AFNetworking for your next project, or migrate over your existing project - If you **want to contribute**, submit a pull request. ## Installation + AFNetworking supports multiple methods for installing the library in a project. ## Installation with CocoaPods -[CocoaPods](http://cocoapods.org) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like AFNetworking in your projects. See the ["Getting Started" guide for more information](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking). You can install it with the following command: - -```bash -$ gem install cocoapods -``` - -> CocoaPods 0.39.0+ is required to build AFNetworking 3.0.0+. - -#### Podfile - To integrate AFNetworking into your Xcode project using CocoaPods, specify it in your `Podfile`: ```ruby -source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '8.0' - -target 'TargetName' do -pod 'AFNetworking', '~> 3.0' -end +pod 'AFNetworking', '~> 4.0' ``` -Then, run the following command: - -```bash -$ pod install -``` +### Installation with Swift Package Manager -### Installation with Carthage +Once you have your Swift package set up, adding AFNetworking as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. +```swift +dependencies: [ + .package(url: "https://github.com/AFNetworking/AFNetworking.git", .upToNextMajor(from: "4.0.0")) +] +``` -You can install Carthage with [Homebrew](http://brew.sh/) using the following command: +> Note: AFNetworking's Swift package does not include it's UIKit extensions. -```bash -$ brew update -$ brew install carthage -``` +### Installation with Carthage -To integrate AFNetworking into your Xcode project using Carthage, specify it in your `Cartfile`: +[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate AFNetworking, add the following to your `Cartfile`. ```ogdl -github "AFNetworking/AFNetworking" ~> 3.0 +github "AFNetworking/AFNetworking" ~> 4.0 ``` -Run `carthage` to build the framework and drag the built `AFNetworking.framework` into your Xcode project. - ## Requirements -| AFNetworking Version | Minimum iOS Target | Minimum macOS Target | Minimum watchOS Target | Minimum tvOS Target | Notes | -|:--------------------:|:---------------------------:|:----------------------------:|:----------------------------:|:----------------------------:|:-------------------------------------------------------------------------:| -| 3.x | iOS 7 | OS X 10.9 | watchOS 2.0 | tvOS 9.0 | Xcode 7+ is required. `NSURLConnectionOperation` support has been removed. | -| 2.6 -> 2.6.3 | iOS 7 | OS X 10.9 | watchOS 2.0 | n/a | Xcode 7+ is required. | -| 2.0 -> 2.5.4 | iOS 6 | OS X 10.8 | n/a | n/a | Xcode 5+ is required. `NSURLSession` subspec requires iOS 7 or OS X 10.9. | -| 1.x | iOS 5 | Mac OS X 10.7 | n/a | n/a | -| 0.10.x | iOS 4 | Mac OS X 10.6 | n/a | n/a | +| AFNetworking Version | Minimum iOS Target | Minimum macOS Target | Minimum watchOS Target | Minimum tvOS Target | Notes | +| :------------------: | :----------------: | :------------------: | :--------------------: | :-----------------: | :------------------------------------------------------------------------: | +| 4.x | iOS 9 | macOS 10.10 | watchOS 2.0 | tvOS 9.0 | Xcode 11+ is required. | +| 3.x | iOS 7 | OS X 10.9 | watchOS 2.0 | tvOS 9.0 | Xcode 7+ is required. `NSURLConnectionOperation` support has been removed. | +| 2.6 -> 2.6.3 | iOS 7 | OS X 10.9 | watchOS 2.0 | n/a | Xcode 7+ is required. | +| 2.0 -> 2.5.4 | iOS 6 | OS X 10.8 | n/a | n/a | Xcode 5+ is required. `NSURLSession` subspec requires iOS 7 or OS X 10.9. | +| 1.x | iOS 5 | Mac OS X 10.7 | n/a | n/a | +| 0.10.x | iOS 4 | Mac OS X 10.6 | n/a | n/a | (macOS projects must support [64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)). @@ -104,11 +92,11 @@ Run `carthage` to build the framework and drag the built `AFNetworking.framework ### Serialization -* `` +- `` - `AFHTTPRequestSerializer` - `AFJSONRequestSerializer` - `AFPropertyListRequestSerializer` -* `` +- `` - `AFHTTPResponseSerializer` - `AFJSONResponseSerializer` - `AFXMLParserResponseSerializer` @@ -263,12 +251,12 @@ NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]}; `AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. -* Do not use Reachability to determine if the original request should be sent. - * You should try to send it. -* You can use Reachability to determine when a request should be automatically retried. - * Although it may still fail, a Reachability notification that the connectivity is available is a good time to retry something. -* Network reachability is a useful tool for determining why a request might have failed. - * After a network request has failed, telling the user they're offline is better than giving them a more technical but accurate error, such as "request timed out." +- Do not use Reachability to determine if the original request should be sent. + - You should try to send it. +- You can use Reachability to determine when a request should be automatically retried. + - Although it may still fail, a Reachability notification that the connectivity is available is a good time to retry something. +- Network reachability is a useful tool for determining why a request might have failed. + - After a network request has failed, telling the user they're offline is better than giving them a more technical but accurate error, such as "request timed out." See also [WWDC 2012 session 706, "Networking Best Practices."](https://developer.apple.com/videos/play/wwdc2012-706/). diff --git a/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m b/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m index 36681603..a09e87c8 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m +++ b/Pods/AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.m @@ -28,7 +28,7 @@ @interface AFCachedImage : NSObject @property (nonatomic, strong) UIImage *image; -@property (nonatomic, strong) NSString *identifier; +@property (nonatomic, copy) NSString *identifier; @property (nonatomic, assign) UInt64 totalBytes; @property (nonatomic, strong) NSDate *lastAccessDate; @property (nonatomic, assign) UInt64 currentMemoryUsage; @@ -37,7 +37,7 @@ @interface AFCachedImage : NSObject @implementation AFCachedImage --(instancetype)initWithImage:(UIImage *)image identifier:(NSString *)identifier { +- (instancetype)initWithImage:(UIImage *)image identifier:(NSString *)identifier { if (self = [self init]) { self.image = image; self.identifier = identifier; @@ -51,7 +51,7 @@ -(instancetype)initWithImage:(UIImage *)image identifier:(NSString *)identifier return self; } -- (UIImage*)accessImage { +- (UIImage *)accessImage { self.lastAccessDate = [NSDate date]; return self.image; } @@ -65,7 +65,7 @@ - (NSString *)description { @end @interface AFAutoPurgingImageCache () -@property (nonatomic, strong) NSMutableDictionary *cachedImages; +@property (nonatomic, strong) NSMutableDictionary *cachedImages; @property (nonatomic, assign) UInt64 currentMemoryUsage; @property (nonatomic, strong) dispatch_queue_t synchronizationQueue; @end @@ -134,7 +134,7 @@ - (void)addImage:(UIImage *)image withIdentifier:(NSString *)identifier { [self.cachedImages removeObjectForKey:cachedImage.identifier]; bytesPurged += cachedImage.totalBytes; if (bytesPurged >= bytesToPurge) { - break ; + break; } } self.currentMemoryUsage -= bytesPurged; diff --git a/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h b/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h index 7e25e373..3bf5a320 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h +++ b/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h @@ -67,7 +67,7 @@ typedef NS_ENUM(NSInteger, AFImageDownloadPrioritization) { /** Defines the order prioritization of incoming download requests being inserted into the queue. `AFImageDownloadPrioritizationFIFO` by default. */ -@property (nonatomic, assign) AFImageDownloadPrioritization downloadPrioritizaton; +@property (nonatomic, assign) AFImageDownloadPrioritization downloadPrioritization; /** The shared default instance of `AFImageDownloader` initialized with default values. diff --git a/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m b/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m index 36745b57..008a7828 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m +++ b/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m @@ -28,8 +28,8 @@ @interface AFImageDownloaderResponseHandler : NSObject @property (nonatomic, strong) NSUUID *uuid; -@property (nonatomic, copy) void (^successBlock)(NSURLRequest*, NSHTTPURLResponse*, UIImage*); -@property (nonatomic, copy) void (^failureBlock)(NSURLRequest*, NSHTTPURLResponse*, NSError*); +@property (nonatomic, copy) void (^successBlock)(NSURLRequest *, NSHTTPURLResponse *, UIImage *); +@property (nonatomic, copy) void (^failureBlock)(NSURLRequest *, NSHTTPURLResponse *, NSError *); @end @implementation AFImageDownloaderResponseHandler @@ -71,11 +71,11 @@ - (instancetype)initWithURLIdentifier:(NSString *)URLIdentifier identifier:(NSUU return self; } -- (void)addResponseHandler:(AFImageDownloaderResponseHandler*)handler { +- (void)addResponseHandler:(AFImageDownloaderResponseHandler *)handler { [self.responseHandlers addObject:handler]; } -- (void)removeResponseHandler:(AFImageDownloaderResponseHandler*)handler { +- (void)removeResponseHandler:(AFImageDownloaderResponseHandler *)handler { [self.responseHandlers removeObject:handler]; } @@ -109,20 +109,24 @@ @interface AFImageDownloader () @implementation AFImageDownloader + (NSURLCache *)defaultURLCache { + NSUInteger memoryCapacity = 20 * 1024 * 1024; // 20MB + NSUInteger diskCapacity = 150 * 1024 * 1024; // 150MB + NSURL *cacheURL = [[[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory + inDomain:NSUserDomainMask + appropriateForURL:nil + create:YES + error:nil] + URLByAppendingPathComponent:@"com.alamofire.imagedownloader"]; - // It's been discovered that a crash will occur on certain versions - // of iOS if you customize the cache. - // - // More info can be found here: https://devforums.apple.com/message/1102182#1102182 - // - // When iOS 7 support is dropped, this should be modified to use - // NSProcessInfo methods instead. - if ([[[UIDevice currentDevice] systemVersion] compare:@"8.2" options:NSNumericSearch] == NSOrderedAscending) { - return [NSURLCache sharedURLCache]; - } - return [[NSURLCache alloc] initWithMemoryCapacity:20 * 1024 * 1024 - diskCapacity:150 * 1024 * 1024 - diskPath:@"com.alamofire.imagedownloader"]; +#if TARGET_OS_MACCATALYST + return [[NSURLCache alloc] initWithMemoryCapacity:memoryCapacity + diskCapacity:diskCapacity + directoryURL:cacheURL]; +#else + return [[NSURLCache alloc] initWithMemoryCapacity:memoryCapacity + diskCapacity:diskCapacity + diskPath:[cacheURL path]]; +#endif } + (NSURLSessionConfiguration *)defaultURLSessionConfiguration { @@ -163,7 +167,7 @@ - (instancetype)initWithSessionManager:(AFHTTPSessionManager *)sessionManager if (self = [super init]) { self.sessionManager = sessionManager; - self.downloadPrioritizaton = downloadPrioritization; + self.downloadPrioritization = downloadPrioritization; self.maximumActiveDownloads = maximumActiveDownloads; self.imageCache = imageCache; @@ -254,14 +258,14 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { dispatch_async(self.responseQueue, ^{ __strong __typeof__(weakSelf) strongSelf = weakSelf; - AFImageDownloaderMergedTask *mergedTask = strongSelf.mergedTasks[URLIdentifier]; + AFImageDownloaderMergedTask *mergedTask = [strongSelf safelyGetMergedTask:URLIdentifier]; if ([mergedTask.identifier isEqual:mergedTaskIdentifier]) { mergedTask = [strongSelf safelyRemoveMergedTaskWithURLIdentifier:URLIdentifier]; if (error) { for (AFImageDownloaderResponseHandler *handler in mergedTask.responseHandlers) { if (handler.failureBlock) { dispatch_async(dispatch_get_main_queue(), ^{ - handler.failureBlock(request, (NSHTTPURLResponse*)response, error); + handler.failureBlock(request, (NSHTTPURLResponse *)response, error); }); } } @@ -273,7 +277,7 @@ - (nullable AFImageDownloadReceipt *)downloadImageForURLRequest:(NSURLRequest *) for (AFImageDownloaderResponseHandler *handler in mergedTask.responseHandlers) { if (handler.successBlock) { dispatch_async(dispatch_get_main_queue(), ^{ - handler.successBlock(request, (NSHTTPURLResponse*)response, responseObject); + handler.successBlock(request, (NSHTTPURLResponse *)response, responseObject); }); } } @@ -333,14 +337,14 @@ - (void)cancelTaskForImageDownloadReceipt:(AFImageDownloadReceipt *)imageDownloa } } - if (mergedTask.responseHandlers.count == 0 && mergedTask.task.state == NSURLSessionTaskStateSuspended) { + if (mergedTask.responseHandlers.count == 0) { [mergedTask.task cancel]; [self removeMergedTaskWithURLIdentifier:URLIdentifier]; } }); } -- (AFImageDownloaderMergedTask*)safelyRemoveMergedTaskWithURLIdentifier:(NSString *)URLIdentifier { +- (AFImageDownloaderMergedTask *)safelyRemoveMergedTaskWithURLIdentifier:(NSString *)URLIdentifier { __block AFImageDownloaderMergedTask *mergedTask = nil; dispatch_sync(self.synchronizationQueue, ^{ mergedTask = [self removeMergedTaskWithURLIdentifier:URLIdentifier]; @@ -383,7 +387,7 @@ - (void)startMergedTask:(AFImageDownloaderMergedTask *)mergedTask { } - (void)enqueueMergedTask:(AFImageDownloaderMergedTask *)mergedTask { - switch (self.downloadPrioritizaton) { + switch (self.downloadPrioritization) { case AFImageDownloadPrioritizationFIFO: [self.queuedMergedTasks addObject:mergedTask]; break; @@ -404,6 +408,14 @@ - (BOOL)isActiveRequestCountBelowMaximumLimit { return self.activeRequestCount < self.maximumActiveDownloads; } +- (AFImageDownloaderMergedTask *)safelyGetMergedTask:(NSString *)URLIdentifier { + __block AFImageDownloaderMergedTask *mergedTask; + dispatch_sync(self.synchronizationQueue, ^(){ + mergedTask = self.mergedTasks[URLIdentifier]; + }); + return mergedTask; +} + @end #endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m b/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m index e6f9b65e..8cb5677e 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m +++ b/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m @@ -109,11 +109,9 @@ - (BOOL)isNetworkActivityOccurring { - (void)setNetworkActivityIndicatorVisible:(BOOL)networkActivityIndicatorVisible { if (_networkActivityIndicatorVisible != networkActivityIndicatorVisible) { - [self willChangeValueForKey:@"networkActivityIndicatorVisible"]; @synchronized(self) { - _networkActivityIndicatorVisible = networkActivityIndicatorVisible; + _networkActivityIndicatorVisible = networkActivityIndicatorVisible; } - [self didChangeValueForKey:@"networkActivityIndicatorVisible"]; if (self.networkActivityActionBlock) { self.networkActivityActionBlock(networkActivityIndicatorVisible); } else { @@ -122,35 +120,20 @@ - (void)setNetworkActivityIndicatorVisible:(BOOL)networkActivityIndicatorVisible } } -- (void)setActivityCount:(NSInteger)activityCount { - @synchronized(self) { - _activityCount = activityCount; - } - - dispatch_async(dispatch_get_main_queue(), ^{ - [self updateCurrentStateForNetworkActivityChange]; - }); -} - (void)incrementActivityCount { - [self willChangeValueForKey:@"activityCount"]; - @synchronized(self) { - _activityCount++; - } - [self didChangeValueForKey:@"activityCount"]; - + @synchronized(self) { + self.activityCount++; + } dispatch_async(dispatch_get_main_queue(), ^{ [self updateCurrentStateForNetworkActivityChange]; }); } - (void)decrementActivityCount { - [self willChangeValueForKey:@"activityCount"]; - @synchronized(self) { - _activityCount = MAX(_activityCount - 1, 0); - } - [self didChangeValueForKey:@"activityCount"]; - + @synchronized(self) { + self.activityCount = MAX(_activityCount - 1, 0); + } dispatch_async(dispatch_get_main_queue(), ^{ [self updateCurrentStateForNetworkActivityChange]; }); @@ -172,7 +155,6 @@ - (void)networkRequestDidFinish:(NSNotification *)notification { - (void)setCurrentState:(AFNetworkActivityManagerState)currentState { @synchronized(self) { if (_currentState != currentState) { - [self willChangeValueForKey:@"currentState"]; _currentState = currentState; switch (currentState) { case AFNetworkActivityManagerStateNotActive: @@ -191,9 +173,7 @@ - (void)setCurrentState:(AFNetworkActivityManagerState)currentState { [self startCompletionDelayTimer]; break; } - [self didChangeValueForKey:@"currentState"]; } - } } diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m index 2da60127..03aaf2a8 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m @@ -103,11 +103,11 @@ @implementation UIButton (AFNetworking) + (AFImageDownloader *)sharedImageDownloader { - return objc_getAssociatedObject(self, @selector(sharedImageDownloader)) ?: [AFImageDownloader defaultInstance]; + return objc_getAssociatedObject([UIButton class], @selector(sharedImageDownloader)) ?: [AFImageDownloader defaultInstance]; } + (void)setSharedImageDownloader:(AFImageDownloader *)imageDownloader { - objc_setAssociatedObject(self, @selector(sharedImageDownloader), imageDownloader, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject([UIButton class], @selector(sharedImageDownloader), imageDownloader, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } #pragma mark - @@ -168,7 +168,7 @@ - (void)setImageForState:(UIControlState)state if ([[strongSelf af_imageDownloadReceiptForState:state].receiptID isEqual:downloadID]) { if (success) { success(request, response, responseObject); - } else if(responseObject) { + } else if (responseObject) { [strongSelf setImage:responseObject forState:state]; } [strongSelf af_setImageDownloadReceipt:nil forState:state]; @@ -247,7 +247,7 @@ - (void)setBackgroundImageForState:(UIControlState)state if ([[strongSelf af_backgroundImageDownloadReceiptForState:state].receiptID isEqual:downloadID]) { if (success) { success(request, response, responseObject); - } else if(responseObject) { + } else if (responseObject) { [strongSelf setBackgroundImage:responseObject forState:state]; } [strongSelf af_setBackgroundImageDownloadReceipt:nil forState:state]; diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h deleted file mode 100644 index 14744cdd..00000000 --- a/Pods/AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// UIImage+AFNetworking.h -// -// -// Created by Paulo Ferreira on 08/07/15. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#if TARGET_OS_IOS || TARGET_OS_TV - -#import - -@interface UIImage (AFNetworking) - -+ (UIImage*) safeImageWithData:(NSData*)data; - -@end - -#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m index 41c18a61..8ae49509 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m @@ -48,11 +48,11 @@ - (void)af_setActiveImageDownloadReceipt:(AFImageDownloadReceipt *)imageDownload @implementation UIImageView (AFNetworking) + (AFImageDownloader *)sharedImageDownloader { - return objc_getAssociatedObject(self, @selector(sharedImageDownloader)) ?: [AFImageDownloader defaultInstance]; + return objc_getAssociatedObject([UIImageView class], @selector(sharedImageDownloader)) ?: [AFImageDownloader defaultInstance]; } + (void)setSharedImageDownloader:(AFImageDownloader *)imageDownloader { - objc_setAssociatedObject(self, @selector(sharedImageDownloader), imageDownloader, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject([UIImageView class], @selector(sharedImageDownloader), imageDownloader, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } #pragma mark - @@ -75,7 +75,6 @@ - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest success:(void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, UIImage *image))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure { - if ([urlRequest URL] == nil) { self.image = placeholderImage; if (failure) { @@ -85,7 +84,7 @@ - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest return; } - if ([self isActiveTaskURLEqualToURLRequest:urlRequest]){ + if ([self isActiveTaskURLEqualToURLRequest:urlRequest]) { return; } @@ -119,7 +118,7 @@ - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest if ([strongSelf.af_activeImageDownloadReceipt.receiptID isEqual:downloadID]) { if (success) { success(request, response, responseObject); - } else if(responseObject) { + } else if (responseObject) { strongSelf.image = responseObject; } [strongSelf clearActiveDownloadInformation]; diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h index febacfc7..aa9c0b02 100644 --- a/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h @@ -20,23 +20,24 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#if TARGET_OS_IOS || TARGET_OS_TV -#import +#import #ifndef _UIKIT_AFNETWORKING_ #define _UIKIT_AFNETWORKING_ -#if TARGET_OS_IOS +#if TARGET_OS_IOS || TARGET_OS_TV #import "AFAutoPurgingImageCache.h" #import "AFImageDownloader.h" - #import "AFNetworkActivityIndicatorManager.h" - #import "UIRefreshControl+AFNetworking.h" - #import "UIWebView+AFNetworking.h" -#endif - #import "UIActivityIndicatorView+AFNetworking.h" #import "UIButton+AFNetworking.h" #import "UIImageView+AFNetworking.h" #import "UIProgressView+AFNetworking.h" -#endif /* _UIKIT_AFNETWORKING_ */ #endif + +#if TARGET_OS_IOS + #import "AFNetworkActivityIndicatorManager.h" + #import "UIRefreshControl+AFNetworking.h" + #import "WKWebView+AFNetworking.h" +#endif + +#endif /* _UIKIT_AFNETWORKING_ */ diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h deleted file mode 100644 index b9a56af4..00000000 --- a/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h +++ /dev/null @@ -1,80 +0,0 @@ -// UIWebView+AFNetworking.h -// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if TARGET_OS_IOS - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class AFHTTPSessionManager; - -/** - This category adds methods to the UIKit framework's `UIWebView` class. The methods in this category provide increased control over the request cycle, including progress monitoring and success / failure handling. - - @discussion When using these category methods, make sure to assign `delegate` for the web view, which implements `–webView:shouldStartLoadWithRequest:navigationType:` appropriately. This allows for tapped links to be loaded through AFNetworking, and can ensure that `canGoBack` & `canGoForward` update their values correctly. - */ -@interface UIWebView (AFNetworking) - -/** - The session manager used to download all requests. - */ -@property (nonatomic, strong) AFHTTPSessionManager *sessionManager; - -/** - Asynchronously loads the specified request. - - @param request A URL request identifying the location of the content to load. This must not be `nil`. - @param progress A progress object monitoring the current download progress. - @param success A block object to be executed when the request finishes loading successfully. This block returns the HTML string to be loaded by the web view, and takes two arguments: the response, and the response string. - @param failure A block object to be executed when the data task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. - */ -- (void)loadRequest:(NSURLRequest *)request - progress:(NSProgress * _Nullable __autoreleasing * _Nullable)progress - success:(nullable NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success - failure:(nullable void (^)(NSError *error))failure; - -/** - Asynchronously loads the data associated with a particular request with a specified MIME type and text encoding. - - @param request A URL request identifying the location of the content to load. This must not be `nil`. - @param MIMEType The MIME type of the content. Defaults to the content type of the response if not specified. - @param textEncodingName The IANA encoding name, as in `utf-8` or `utf-16`. Defaults to the response text encoding if not specified. -@param progress A progress object monitoring the current download progress. - @param success A block object to be executed when the request finishes loading successfully. This block returns the data to be loaded by the web view and takes two arguments: the response, and the downloaded data. - @param failure A block object to be executed when the data task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. - */ -- (void)loadRequest:(NSURLRequest *)request - MIMEType:(nullable NSString *)MIMEType - textEncodingName:(nullable NSString *)textEncodingName - progress:(NSProgress * _Nullable __autoreleasing * _Nullable)progress - success:(nullable NSData * (^)(NSHTTPURLResponse *response, NSData *data))success - failure:(nullable void (^)(NSError *error))failure; - -@end - -NS_ASSUME_NONNULL_END - -#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m deleted file mode 100644 index 030c3e94..00000000 --- a/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m +++ /dev/null @@ -1,157 +0,0 @@ -// UIWebView+AFNetworking.m -// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ ) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIWebView+AFNetworking.h" - -#import - -#if TARGET_OS_IOS - -#import "AFHTTPSessionManager.h" -#import "AFURLResponseSerialization.h" -#import "AFURLRequestSerialization.h" - -@interface UIWebView (_AFNetworking) -@property (readwrite, nonatomic, strong, setter = af_setURLSessionTask:) NSURLSessionDataTask *af_URLSessionTask; -@end - -@implementation UIWebView (_AFNetworking) - -- (NSURLSessionDataTask *)af_URLSessionTask { - return (NSURLSessionDataTask *)objc_getAssociatedObject(self, @selector(af_URLSessionTask)); -} - -- (void)af_setURLSessionTask:(NSURLSessionDataTask *)af_URLSessionTask { - objc_setAssociatedObject(self, @selector(af_URLSessionTask), af_URLSessionTask, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -@end - -#pragma mark - - -@implementation UIWebView (AFNetworking) - -- (AFHTTPSessionManager *)sessionManager { - static AFHTTPSessionManager *_af_defaultHTTPSessionManager = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_defaultHTTPSessionManager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; - _af_defaultHTTPSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer]; - _af_defaultHTTPSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; - }); - - return objc_getAssociatedObject(self, @selector(sessionManager)) ?: _af_defaultHTTPSessionManager; -} - -- (void)setSessionManager:(AFHTTPSessionManager *)sessionManager { - objc_setAssociatedObject(self, @selector(sessionManager), sessionManager, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (AFHTTPResponseSerializer *)responseSerializer { - static AFHTTPResponseSerializer *_af_defaultResponseSerializer = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_defaultResponseSerializer = [AFHTTPResponseSerializer serializer]; - }); - - return objc_getAssociatedObject(self, @selector(responseSerializer)) ?: _af_defaultResponseSerializer; -} - -- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { - objc_setAssociatedObject(self, @selector(responseSerializer), responseSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -- (void)loadRequest:(NSURLRequest *)request - progress:(NSProgress * _Nullable __autoreleasing * _Nullable)progress - success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success - failure:(void (^)(NSError *error))failure -{ - [self loadRequest:request MIMEType:nil textEncodingName:nil progress:progress success:^NSData *(NSHTTPURLResponse *response, NSData *data) { - NSStringEncoding stringEncoding = NSUTF8StringEncoding; - if (response.textEncodingName) { - CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - if (encoding != kCFStringEncodingInvalidId) { - stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); - } - } - - NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding]; - if (success) { - string = success(response, string); - } - - return [string dataUsingEncoding:stringEncoding]; - } failure:failure]; -} - -- (void)loadRequest:(NSURLRequest *)request - MIMEType:(NSString *)MIMEType - textEncodingName:(NSString *)textEncodingName - progress:(NSProgress * _Nullable __autoreleasing * _Nullable)progress - success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success - failure:(void (^)(NSError *error))failure -{ - NSParameterAssert(request); - - if (self.af_URLSessionTask.state == NSURLSessionTaskStateRunning || self.af_URLSessionTask.state == NSURLSessionTaskStateSuspended) { - [self.af_URLSessionTask cancel]; - } - self.af_URLSessionTask = nil; - - __weak __typeof(self)weakSelf = self; - __block NSURLSessionDataTask *dataTask; - dataTask = [self.sessionManager - dataTaskWithRequest:request - uploadProgress:nil - downloadProgress:nil - completionHandler:^(NSURLResponse * _Nonnull response, id _Nonnull responseObject, NSError * _Nullable error) { - __strong __typeof(weakSelf) strongSelf = weakSelf; - if (error) { - if (failure) { - failure(error); - } - } else { - if (success) { - success((NSHTTPURLResponse *)response, responseObject); - } - [strongSelf loadData:responseObject MIMEType:MIMEType textEncodingName:textEncodingName baseURL:[dataTask.currentRequest URL]]; - - if ([strongSelf.delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) { - [strongSelf.delegate webViewDidFinishLoad:strongSelf]; - } - } - }]; - self.af_URLSessionTask = dataTask; - if (progress != nil) { - *progress = [self.sessionManager downloadProgressForTask:dataTask]; - } - [self.af_URLSessionTask resume]; - - if ([self.delegate respondsToSelector:@selector(webViewDidStartLoad:)]) { - [self.delegate webViewDidStartLoad:self]; - } -} - -@end - -#endif diff --git a/Pods/FMDB/README.markdown b/Pods/FMDB/README.markdown index a9b5dd43..6aa06ed3 100644 --- a/Pods/FMDB/README.markdown +++ b/Pods/FMDB/README.markdown @@ -3,15 +3,15 @@ [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/FMDB.svg)](https://img.shields.io/cocoapods/v/FMDB.svg) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) -This is an Objective-C wrapper around SQLite: http://sqlite.org/ +This is an Objective-C wrapper around [SQLite](https://sqlite.org/). ## The FMDB Mailing List: -http://groups.google.com/group/fmdb +https://groups.google.com/group/fmdb ## Read the SQLite FAQ: -http://www.sqlite.org/faq.html +https://www.sqlite.org/faq.html -Since FMDB is built on top of SQLite, you're going to want to read this page top to bottom at least once. And while you're there, make sure to bookmark the SQLite Documentation page: http://www.sqlite.org/docs.html +Since FMDB is built on top of SQLite, you're going to want to read this page top to bottom at least once. And while you're there, make sure to bookmark the SQLite Documentation page: https://www.sqlite.org/docs.html ## Contributing Do you have an awesome idea that deserves to be in FMDB? You might consider pinging ccgus first to make sure he hasn't already ruled it out for some reason. Otherwise pull requests are great, and make sure you stick to the local coding conventions. However, please be patient and if you haven't heard anything from ccgus for a week or more, you might want to send a note asking what's up. @@ -20,9 +20,6 @@ Do you have an awesome idea that deserves to be in FMDB? You might consider pin ### CocoaPods -[![Dependency Status](https://www.versioneye.com/objective-c/fmdb/2.3/badge.svg?style=flat)](https://www.versioneye.com/objective-c/fmdb/2.3) -[![Reference Status](https://www.versioneye.com/objective-c/fmdb/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/fmdb/references) - FMDB can be installed using [CocoaPods](https://cocoapods.org/). If you haven't done so already, you might want to initialize the project, to have it produce a `Podfile` template for you: @@ -74,8 +71,23 @@ $ carthage update You can then configure your project as outlined in Carthage's [Getting Started](https://github.com/Carthage/Carthage#getting-started) (i.e. for iOS, adding the framework to the "Link Binary with Libraries" in your target and adding the `copy-frameworks` script; in macOS, adding the framework to the list of "Embedded Binaries"). +### Swift Package Manager + +Declare FMDB as a package dependency. +```swift +.package( + name: "FMDB", + url: "https://github.com/ccgus/fmdb", + .upToNextMinor(from: "2.7.8")), +``` + +Use FMDB in target dependencies +```swift +.product(name: "FMDB", package: "FMDB") +``` + ## FMDB Class Reference: -http://ccgus.github.io/fmdb/html/index.html +https://ccgus.github.io/fmdb/html/index.html ## Automatic Reference Counting (ARC) or Manual Memory Management? You can use either style in your Cocoa project. FMDB will figure out which you are using at compile time and do the right thing. @@ -182,7 +194,7 @@ An `FMDatabase` is created with a path to a SQLite database file. This path can 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted when the `FMDatabase` connection is closed. 3. `NULL`. An in-memory database is created. This database will be destroyed when the `FMDatabase` connection is closed. -(For more information on temporary and in-memory databases, read the sqlite documentation on the subject: http://www.sqlite.org/inmemorydb.html) +(For more information on temporary and in-memory databases, read the sqlite documentation on the subject: https://www.sqlite.org/inmemorydb.html) ```objc NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tmp.db"]; @@ -229,6 +241,7 @@ FMResultSet *s = [db executeQuery:@"SELECT COUNT(*) FROM myTable"]; if ([s next]) { int totalCount = [s intForColumnIndex:0]; } +[s close]; // Call the -close method on the FMResultSet if you cannot confirm whether the result set is exhausted. ``` `FMResultSet` has many methods to retrieve data in an appropriate format: @@ -247,7 +260,7 @@ if ([s next]) { Each of these methods also has a `{type}ForColumnIndex:` variant that is used to retrieve the data based on the position of the column in the results, as opposed to the column's name. -Typically, there's no need to `-close` an `FMResultSet` yourself, since that happens when either the result set is deallocated, or the parent database is closed. +Typically, there's no need to `-close` an `FMResultSet` yourself, since that happens when either the result set is exhausted. However, if you only pull out a single request or any other number of requests which don't exhaust the result set, you will need to call the `-close` method on the `FMResultSet`. ### Closing @@ -436,7 +449,7 @@ To do this, you must: 1. Copy the relevant `.m` and `.h` files from the FMDB `src` folder into your project. - You can copy all of them (which is easiest), or only the ones you need. Likely you will need [`FMDatabase`](http://ccgus.github.io/fmdb/html/Classes/FMDatabase.html) and [`FMResultSet`](http://ccgus.github.io/fmdb/html/Classes/FMResultSet.html) at a minimum. [`FMDatabaseAdditions`](http://ccgus.github.io/fmdb/html/Categories/FMDatabase+FMDatabaseAdditions.html) provides some very useful convenience methods, so you will likely want that, too. If you are doing multithreaded access to a database, [`FMDatabaseQueue`](http://ccgus.github.io/fmdb/html/Classes/FMDatabaseQueue.html) is quite useful, too. If you choose to not copy all of the files from the `src` directory, though, you may want to update `FMDB.h` to only reference the files that you included in your project. + You can copy all of them (which is easiest), or only the ones you need. Likely you will need [`FMDatabase`](https://ccgus.github.io/fmdb/html/Classes/FMDatabase.html) and [`FMResultSet`](https://ccgus.github.io/fmdb/html/Classes/FMResultSet.html) at a minimum. [`FMDatabaseAdditions`](https://ccgus.github.io/fmdb/html/Categories/FMDatabase+FMDatabaseAdditions.html) provides some very useful convenience methods, so you will likely want that, too. If you are doing multithreaded access to a database, [`FMDatabaseQueue`](https://ccgus.github.io/fmdb/html/Classes/FMDatabaseQueue.html) is quite useful, too. If you choose to not copy all of the files from the `src` directory, though, you may want to update `FMDB.h` to only reference the files that you included in your project. Note, if you're copying all of the files from the `src` folder into to your project (which is recommended), you may want to drag the individual files into your project, not the folder, itself, because if you drag the folder, you won't be prompted to add the bridging header (see next point). diff --git a/Pods/FMDB/src/fmdb/FMDatabase.h b/Pods/FMDB/src/fmdb/FMDatabase.h index 574db3ee..2a4ead22 100644 --- a/Pods/FMDB/src/fmdb/FMDatabase.h +++ b/Pods/FMDB/src/fmdb/FMDatabase.h @@ -38,9 +38,14 @@ NS_ASSUME_NONNULL_BEGIN #define instancetype id #endif - +/** + Callback block used by @c executeStatements:withResultBlock: + */ typedef int(^FMDBExecuteStatementsCallbackBlock)(NSDictionary *resultsDictionary); +/** + Enumeration used in checkpoint methods. + */ typedef NS_ENUM(int, FMDBCheckpointMode) { FMDBCheckpointModePassive = 0, // SQLITE_CHECKPOINT_PASSIVE, FMDBCheckpointModeFull = 1, // SQLITE_CHECKPOINT_FULL, @@ -48,34 +53,37 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { FMDBCheckpointModeTruncate = 3 // SQLITE_CHECKPOINT_TRUNCATE }; -/** A SQLite ([http://sqlite.org/](http://sqlite.org/)) Objective-C wrapper. - - ### Usage +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-interface-ivars" + +/** A SQLite ([https://sqlite.org/](https://sqlite.org/)) Objective-C wrapper. + + Usage + The three main classes in FMDB are: - - `FMDatabase` - Represents a single SQLite database. Used for executing SQL statements. - - `` - Represents the results of executing a query on an `FMDatabase`. - - `` - If you want to perform queries and updates on multiple threads, you'll want to use this class. + - @c FMDatabase - Represents a single SQLite database. Used for executing SQL statements. + + - @c FMResultSet - Represents the results of executing a query on an @c FMDatabase . + + - @c FMDatabaseQueue - If you want to perform queries and updates on multiple threads, you'll want to use this class. + + See also + + - @c FMDatabasePool - A pool of @c FMDatabase objects + + - @c FMStatement - A wrapper for @c sqlite_stmt + + External links - ### See also - - - `` - A pool of `FMDatabase` objects. - - `` - A wrapper for `sqlite_stmt`. - - ### External links - - [FMDB on GitHub](https://github.com/ccgus/fmdb) including introductory documentation - - [SQLite web site](http://sqlite.org/) + - [SQLite web site](https://sqlite.org/) - [FMDB mailing list](http://groups.google.com/group/fmdb) - - [SQLite FAQ](http://www.sqlite.org/faq.html) - - @warning Do not instantiate a single `FMDatabase` object and use it across multiple threads. Instead, use ``. - - */ + - [SQLite FAQ](https://sqlite.org/faq.html) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wobjc-interface-ivars" + @warning Do not instantiate a single @c FMDatabase object and use it across multiple threads. Instead, use @c FMDatabaseQueue . + */ @interface FMDatabase : NSObject @@ -107,111 +115,110 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /// @name Initialization ///--------------------- -/** Create a `FMDatabase` object. +/** Create a @c FMDatabase object. - An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: + An @c FMDatabase is created with a path to a SQLite database file. This path can be one of these three: 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. - 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted with the `FMDatabase` connection is closed. - 3. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. - For example, to create/open a database in your Mac OS X `tmp` folder: + 2. An zero-length string. An empty database is created at a temporary location. This database is deleted with the @c FMDatabase connection is closed. - FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; + 3. @c nil . An in-memory database is created. This database will be destroyed with the @c FMDatabase connection is closed. - Or, in iOS, you might open a database in the app's `Documents` directory: + For example, to open a database in the app's “Application Support” directory: - NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; - NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; - FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; +@code +NSURL *folder = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error]; +NSURL *fileURL = [folder URLByAppendingPathComponent:@"test.db"]; +FMDatabase *db = [FMDatabase databaseWithPath:fileURL.path]; +@endcode - (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) + (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [https://sqlite.org/inmemorydb.html](https://sqlite.org/inmemorydb.html)) @param inPath Path of database file - @return `FMDatabase` object if successful; `nil` if failure. + @return @c FMDatabase object if successful; @c nil if failure. */ + (instancetype)databaseWithPath:(NSString * _Nullable)inPath; -/** Create a `FMDatabase` object. +/** Create a @c FMDatabase object. - An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: + An @c FMDatabase is created with a path to a SQLite database file. This path can be one of these three: 1. A file system URL. The file does not have to exist on disk. If it does not exist, it is created for you. - 2. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. - - For example, to create/open a database in your Mac OS X `tmp` folder: - - FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; - - Or, in iOS, you might open a database in the app's `Documents` directory: - - NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; - NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; - FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; + + 2. @c nil . An in-memory database is created. This database will be destroyed with the @c FMDatabase connection is closed. - (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) + For example, to open a database in the app's “Application Support” directory: + +@code +NSURL *folder = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error]; +NSURL *fileURL = [folder URLByAppendingPathComponent:@"test.db"]; +FMDatabase *db = [FMDatabase databaseWithURL:fileURL]; +@endcode + + (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [https://sqlite.org/inmemorydb.html](https://sqlite.org/inmemorydb.html)) @param url The local file URL (not remote URL) of database file - @return `FMDatabase` object if successful; `nil` if failure. + @return @c FMDatabase object if successful; @c nil if failure. */ + (instancetype)databaseWithURL:(NSURL * _Nullable)url; -/** Initialize a `FMDatabase` object. +/** Initialize a @c FMDatabase object. - An `FMDatabase` is created with a path to a SQLite database file. This path can be one of these three: + An @c FMDatabase is created with a path to a SQLite database file. This path can be one of these three: 1. A file system path. The file does not have to exist on disk. If it does not exist, it is created for you. - 2. An empty string (`@""`). An empty database is created at a temporary location. This database is deleted with the `FMDatabase` connection is closed. - 3. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. - For example, to create/open a database in your Mac OS X `tmp` folder: + 2. A zero-length string. An empty database is created at a temporary location. This database is deleted with the @c FMDatabase connection is closed. + + 3. @c nil . An in-memory database is created. This database will be destroyed with the @c FMDatabase connection is closed. - FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; + For example, to open a database in the app's “Application Support” directory: - Or, in iOS, you might open a database in the app's `Documents` directory: + @code + NSURL *folder = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error]; + NSURL *fileURL = [folder URLByAppendingPathComponent:@"test.db"]; + FMDatabase *db = [[FMDatabase alloc] initWithPath:fileURL.path]; + @endcode - NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; - NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; - FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; - (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) + (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [https://sqlite.org/inmemorydb.html](https://sqlite.org/inmemorydb.html)) @param path Path of database file. - @return `FMDatabase` object if successful; `nil` if failure. + @return @c FMDatabase object if successful; @c nil if failure. */ - (instancetype)initWithPath:(NSString * _Nullable)path; -/** Initialize a `FMDatabase` object. +/** Initialize a @c FMDatabase object. - An `FMDatabase` is created with a local file URL to a SQLite database file. This path can be one of these three: + An @c FMDatabase is created with a local file URL to a SQLite database file. This path can be one of these three: 1. A file system URL. The file does not have to exist on disk. If it does not exist, it is created for you. - 2. `nil`. An in-memory database is created. This database will be destroyed with the `FMDatabase` connection is closed. - - For example, to create/open a database in your Mac OS X `tmp` folder: - - FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]; - - Or, in iOS, you might open a database in the app's `Documents` directory: - - NSString *docsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; - NSString *dbPath = [docsPath stringByAppendingPathComponent:@"test.db"]; - FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; + + 2. @c nil . An in-memory database is created. This database will be destroyed with the @c FMDatabase connection is closed. - (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [http://www.sqlite.org/inmemorydb.html](http://www.sqlite.org/inmemorydb.html)) + For example, to open a database in the app's “Application Support” directory: + + @code + NSURL *folder = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:true error:&error]; + NSURL *fileURL = [folder URLByAppendingPathComponent:@"test.db"]; + FMDatabase *db = [[FMDatabase alloc] initWithURL:fileURL]; + @endcode + + (For more information on temporary and in-memory databases, read the sqlite documentation on the subject: [https://sqlite.org/inmemorydb.html](https://sqlite.org/inmemorydb.html)) - @param url The file `NSURL` of database file. + @param url The file @c NSURL of database file. - @return `FMDatabase` object if successful; `nil` if failure. + @return @c FMDatabase object if successful; @c nil if failure. */ @@ -229,9 +236,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { The database is opened for reading and writing, and is created if it does not already exist. - @return `YES` if successful, `NO` on error. + @return @c YES if successful, @c NO on error. - @see [sqlite3_open()](http://sqlite.org/c3ref/open.html) + @see [sqlite3_open()](https://sqlite.org/c3ref/open.html) @see openWithFlags: @see close */ @@ -240,23 +247,29 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Opening a new database connection with flags and an optional virtual file system (VFS) - @param flags one of the following three values, optionally combined with the `SQLITE_OPEN_NOMUTEX`, `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, `SQLITE_OPEN_PRIVATECACHE`, and/or `SQLITE_OPEN_URI` flags: + @param flags One of the following three values, optionally combined with the @c SQLITE_OPEN_NOMUTEX , @c SQLITE_OPEN_FULLMUTEX , @c SQLITE_OPEN_SHAREDCACHE , @c SQLITE_OPEN_PRIVATECACHE , and/or @c SQLITE_OPEN_URI flags: - `SQLITE_OPEN_READONLY` +@code +SQLITE_OPEN_READONLY +@endcode The database is opened in read-only mode. If the database does not already exist, an error is returned. - `SQLITE_OPEN_READWRITE` - +@code +SQLITE_OPEN_READWRITE +@endcode + The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. + +@code +SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE +@endcode - `SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE` - - The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for `open` method. + The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for @c open method. - @return `YES` if successful, `NO` on error. + @return @c YES if successful, @c NO on error. - @see [sqlite3_open_v2()](http://sqlite.org/c3ref/open.html) + @see [sqlite3_open_v2()](https://sqlite.org/c3ref/open.html) @see open @see close */ @@ -265,25 +278,31 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Opening a new database connection with flags and an optional virtual file system (VFS) - @param flags one of the following three values, optionally combined with the `SQLITE_OPEN_NOMUTEX`, `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, `SQLITE_OPEN_PRIVATECACHE`, and/or `SQLITE_OPEN_URI` flags: - - `SQLITE_OPEN_READONLY` - - The database is opened in read-only mode. If the database does not already exist, an error is returned. - - `SQLITE_OPEN_READWRITE` + @param flags One of the following three values, optionally combined with the @c SQLITE_OPEN_NOMUTEX , `SQLITE_OPEN_FULLMUTEX`, `SQLITE_OPEN_SHAREDCACHE`, @c SQLITE_OPEN_PRIVATECACHE , and/or @c SQLITE_OPEN_URI flags: - The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. - - `SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE` - - The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for `open` method. +@code +SQLITE_OPEN_READONLY +@endcode + + The database is opened in read-only mode. If the database does not already exist, an error is returned. + +@code +SQLITE_OPEN_READWRITE +@endcode + + The database is opened for reading and writing if possible, or reading only if the file is write protected by the operating system. In either case the database must already exist, otherwise an error is returned. + +@code +SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE +@endcode + + The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for @c open method. @param vfsName If vfs is given the value is passed to the vfs parameter of sqlite3_open_v2. - @return `YES` if successful, `NO` on error. + @return @c YES if successful, @c NO on error. - @see [sqlite3_open_v2()](http://sqlite.org/c3ref/open.html) + @see [sqlite3_open_v2()](https://sqlite.org/c3ref/open.html) @see open @see close */ @@ -292,9 +311,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Closing a database connection - @return `YES` if success, `NO` on error. + @return @c YES if success, @c NO on error. - @see [sqlite3_close()](http://sqlite.org/c3ref/close.html) + @see [sqlite3_close()](https://sqlite.org/c3ref/close.html) @see open @see openWithFlags: */ @@ -306,9 +325,10 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { This will confirm whether: - is database open - - if open, it will try a simple SELECT statement and confirm that it succeeds. - @return `YES` if everything succeeds, `NO` on failure. + - if open, it will try a simple @c SELECT statement and confirm that it succeeds. + + @return @c YES if everything succeeds, @c NO on failure. */ @property (nonatomic, readonly) BOOL goodConnection; @@ -320,25 +340,23 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](https://sqlite.org/c3ref/step.html) to perform the update. - The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + The optional values provided to this method should be objects (e.g. @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects), not fundamental data types (e.g. @c int , @c long , @c NSInteger , etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's @c description method. - @param sql The SQL to be performed, with optional `?` placeholders. + @param sql The SQL to be performed, with optional `?` placeholders. This can be followed by iptional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. @c NSString , @c NSNumber , etc.), not fundamental C data types (e.g. @c int , etc.). - @param outErr A reference to the `NSError` pointer to be updated with an auto released `NSError` object if an error if an error occurs. If `nil`, no `NSError` object will be returned. - - @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). + @param outErr A reference to the @c NSError pointer to be updated with an auto released @c NSError object if an error if an error occurs. If @c nil , no @c NSError object will be returned. - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage - @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) + @see [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) */ -- (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError * _Nullable *)outErr, ...; +- (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError * _Nullable __autoreleasing *)outErr, ...; /** Execute single update statement @@ -347,26 +365,24 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @warning **Deprecated**: Please use `` instead. */ -- (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError * _Nullable*)outErr, ... __deprecated_msg("Use executeUpdate:withErrorAndBindings: instead");; +- (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError * _Nullable __autoreleasing *)outErr, ... __deprecated_msg("Use executeUpdate:withErrorAndBindings: instead");; /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html), [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) to bind values to `?` placeholders in the SQL with the optional list of parameters, and [`sqlite_step`](https://sqlite.org/c3ref/step.html) to perform the update. - The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + The optional values provided to this method should be objects (e.g. @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects), not fundamental data types (e.g. @c int , @c long , @c NSInteger , etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's @c description method. - @param sql The SQL to be performed, with optional `?` placeholders. - - @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). + @param sql The SQL to be performed, with optional `?` placeholders, followed by optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. @c NSString , @c NSNumber , etc.), not fundamental C data types (e.g. @c int , etc.). - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see lastError @see lastErrorCode @see lastErrorMessage - @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) + @see [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) - @note This technique supports the use of `?` placeholders in the SQL, automatically binding any supplied value parameters to those placeholders. This approach is more robust than techniques that entail using `stringWithFormat` to manually build SQL statements, which can be problematic if the values happened to include any characters that needed to be quoted. + @note This technique supports the use of `?` placeholders in the SQL, automatically binding any supplied value parameters to those placeholders. This approach is more robust than techniques that entail using @c stringWithFormat to manually build SQL statements, which can be problematic if the values happened to include any characters that needed to be quoted. @note You cannot use this method from Swift due to incompatibilities between Swift and Objective-C variadic implementations. Consider using `` instead. */ @@ -375,13 +391,11 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. Do not use `?` placeholders in the SQL if you use this method. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](https://sqlite.org/c3ref/step.html) to perform the update. Unlike the other @c executeUpdate methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. Do not use `?` placeholders in the SQL if you use this method. - @param format The SQL to be performed, with `printf`-style escape sequences. + @param format The SQL to be performed, with `printf`-style escape sequences, followed by optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. - @param ... Optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. - - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see executeUpdate: @see lastError @@ -390,28 +404,32 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @note This method does not technically perform a traditional printf-style replacement. What this method actually does is replace the printf-style percent sequences with a SQLite `?` placeholder, and then bind values to that placeholder. Thus the following command - [db executeUpdateWithFormat:@"INSERT INTO test (name) VALUES (%@)", @"Gus"]; +@code +[db executeUpdateWithFormat:@"INSERT INTO test (name) VALUES (%@)", @"Gus"]; +@endcode is actually replacing the `%@` with `?` placeholder, and then performing something equivalent to `` - [db executeUpdate:@"INSERT INTO test (name) VALUES (?)", @"Gus"]; +@code +[db executeUpdate:@"INSERT INTO test (name) VALUES (?)", @"Gus"]; +@endcode - There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `VALUES` clause was _not_ `VALUES ('%@')` (like you might have to do if you built a SQL statement using `NSString` method `stringWithFormat`), but rather simply `VALUES (%@)`. + There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `VALUES` clause was _not_ `VALUES ('%@')` (like you might have to do if you built a SQL statement using @c NSString method @c stringWithFormat ), but rather simply `VALUES (%@)`. */ - (BOOL)executeUpdateWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. - The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + The optional values provided to this method should be objects (e.g. @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects), not fundamental data types (e.g. @c int , @c long , @c NSInteger , etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's @c description method. @param sql The SQL to be performed, with optional `?` placeholders. - @param arguments A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + @param arguments A @c NSArray of objects to be used when binding values to the `?` placeholders in the SQL statement. - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see executeUpdate:values:error: @see lastError @@ -423,23 +441,25 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html) and [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) binding any `?` placeholders in the SQL with the optional list of parameters. - The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + The optional values provided to this method should be objects (e.g. @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects), not fundamental data types (e.g. @c int , @c long , @c NSInteger , etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's @c description method. - This is similar to ``, except that this also accepts a pointer to a `NSError` pointer, so that errors can be returned. + This is similar to @c executeUpdate:withArgumentsInArray: , except that this also accepts a pointer to a @c NSError pointer, so that errors can be returned. In Swift, this throws errors, as if it were defined as follows: - `func executeUpdate(sql: String, values: [Any]?) throws -> Bool` - +@code +func executeUpdate(sql: String, values: [Any]?) throws -> Bool { } +@endcode + @param sql The SQL to be performed, with optional `?` placeholders. - @param values A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + @param values A @c NSArray of objects to be used when binding values to the `?` placeholders in the SQL statement. - @param error A `NSError` object to receive any error object (if any). + @param error A @c NSError object to receive any error object (if any). - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see lastError @see lastErrorCode @@ -451,15 +471,15 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](https://sqlite.org/c3ref/step.html) to perform the update. Unlike the other @c executeUpdate methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. - The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + The optional values provided to this method should be objects (e.g. @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects), not fundamental data types (e.g. @c int , @c long , @c NSInteger , etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's @c description method. @param sql The SQL to be performed, with optional `?` placeholders. - @param arguments A `NSDictionary` of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. + @param arguments A @c NSDictionary of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see lastError @see lastErrorCode @@ -471,15 +491,15 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute single update statement - This method executes a single SQL update statement (i.e. any SQL that does not return results, such as `UPDATE`, `INSERT`, or `DELETE`. This method employs [`sqlite3_prepare_v2`](http://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](http://sqlite.org/c3ref/step.html) to perform the update. Unlike the other `executeUpdate` methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. + This method executes a single SQL update statement (i.e. any SQL that does not return results, such as @c UPDATE , @c INSERT , or @c DELETE . This method employs [`sqlite3_prepare_v2`](https://sqlite.org/c3ref/prepare.html) and [`sqlite_step`](https://sqlite.org/c3ref/step.html) to perform the update. Unlike the other @c executeUpdate methods, this uses printf-style formatters (e.g. `%s`, `%d`, etc.) to build the SQL. - The optional values provided to this method should be objects (e.g. `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects), not fundamental data types (e.g. `int`, `long`, `NSInteger`, etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's `description` method. + The optional values provided to this method should be objects (e.g. @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects), not fundamental data types (e.g. @c int , @c long , @c NSInteger , etc.). This method automatically handles the aforementioned object types, and all other object types will be interpreted as text values using the object's @c description method. @param sql The SQL to be performed, with optional `?` placeholders. @param args A `va_list` of arguments. - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see lastError @see lastErrorCode @@ -490,14 +510,14 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute multiple SQL statements - This executes a series of SQL statements that are combined in a single string (e.g. the SQL generated by the `sqlite3` command line `.dump` command). This accepts no value parameters, but rather simply expects a single string with multiple SQL statements, each terminated with a semicolon. This uses `sqlite3_exec`. + This executes a series of SQL statements that are combined in a single string (e.g. the SQL generated by the `sqlite3` command line `.dump` command). This accepts no value parameters, but rather simply expects a single string with multiple SQL statements, each terminated with a semicolon. This uses @c sqlite3_exec . @param sql The SQL to be performed - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see executeStatements:withResultBlock: - @see [sqlite3_exec()](http://sqlite.org/c3ref/exec.html) + @see [sqlite3_exec()](https://sqlite.org/c3ref/exec.html) */ @@ -509,15 +529,15 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @param sql The SQL to be performed. @param block A block that will be called for any result sets returned by any SQL statements. - Note, if you supply this block, it must return integer value, zero upon success (this would be a good opportunity to use SQLITE_OK), + Note, if you supply this block, it must return integer value, zero upon success (this would be a good opportunity to use @c SQLITE_OK ), non-zero value upon failure (which will stop the bulk execution of the SQL). If a statement returns values, the block will be called with the results from the query in NSDictionary *resultsDictionary. - This may be `nil` if you don't care to receive any results. + This may be @c nil if you don't care to receive any results. - @return `YES` upon success; `NO` upon failure. If failed, you can call ``, - ``, or `` for diagnostic information regarding the failure. + @return @c YES upon success; @c NO upon failure. If failed, you can call @c lastError , + @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see executeStatements: - @see [sqlite3_exec()](http://sqlite.org/c3ref/exec.html) + @see [sqlite3_exec()](https://sqlite.org/c3ref/exec.html) */ @@ -527,11 +547,11 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { Each entry in an SQLite table has a unique 64-bit signed integer key called the "rowid". The rowid is always available as an undeclared column named `ROWID`, `OID`, or `_ROWID_` as long as those names are not also used by explicitly declared columns. If the table has a column of type `INTEGER PRIMARY KEY` then that column is another alias for the rowid. - This routine returns the rowid of the most recent successful `INSERT` into the database from the database connection in the first argument. As of SQLite version 3.7.7, this routines records the last insert rowid of both ordinary tables and virtual tables. If no successful `INSERT`s have ever occurred on that database connection, zero is returned. + This routine returns the rowid of the most recent successful @c INSERT into the database from the database connection in the first argument. As of SQLite version 3.7.7, this routines records the last insert rowid of both ordinary tables and virtual tables. If no successful @c INSERT statements have ever occurred on that database connection, zero is returned. @return The rowid of the last inserted row. - @see [sqlite3_last_insert_rowid()](http://sqlite.org/c3ref/last_insert_rowid.html) + @see [sqlite3_last_insert_rowid()](https://sqlite.org/c3ref/last_insert_rowid.html) */ @@ -539,11 +559,11 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** The number of rows changed by prior SQL statement. - This function returns the number of database rows that were changed or inserted or deleted by the most recently completed SQL statement on the database connection specified by the first parameter. Only changes that are directly specified by the INSERT, UPDATE, or DELETE statement are counted. + This function returns the number of database rows that were changed or inserted or deleted by the most recently completed SQL statement on the database connection specified by the first parameter. Only changes that are directly specified by the @c INSERT , @c UPDATE , or @c DELETE statement are counted. @return The number of rows changed by prior SQL statement. - @see [sqlite3_changes()](http://sqlite.org/c3ref/changes.html) + @see [sqlite3_changes()](https://sqlite.org/c3ref/changes.html) */ @@ -556,21 +576,19 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute select statement - Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. + Executing queries returns an @c FMResultSet object if successful, and @c nil upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the @c lastErrorMessage and @c lastErrorMessage methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. - This method employs [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) for any optional value parameters. This properly escapes any characters that need escape sequences (e.g. quotation marks), which eliminates simple SQL errors as well as protects against SQL injection attacks. This method natively handles `NSString`, `NSNumber`, `NSNull`, `NSDate`, and `NSData` objects. All other object types will be interpreted as text values using the object's `description` method. + This method employs [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) for any optional value parameters. This properly escapes any characters that need escape sequences (e.g. quotation marks), which eliminates simple SQL errors as well as protects against SQL injection attacks. This method natively handles @c NSString , @c NSNumber , @c NSNull , @c NSDate , and @c NSData objects. All other object types will be interpreted as text values using the object's @c description method. - @param sql The SELECT statement to be performed, with optional `?` placeholders. - - @param ... Optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. `NSString`, `NSNumber`, etc.), not fundamental C data types (e.g. `int`, `char *`, etc.). + @param sql The SELECT statement to be performed, with optional `?` placeholders, followed by optional parameters to bind to `?` placeholders in the SQL statement. These should be Objective-C objects (e.g. @c NSString , @c NSNumber , etc.), not fundamental C data types (e.g. @c int , etc.). - @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return A @c FMResultSet for the result set upon success; @c nil upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) - @see [`sqlite3_bind`](http://sqlite.org/c3ref/bind_blob.html) + @see [`sqlite3_bind`](https://sqlite.org/c3ref/bind_blob.html) @note You cannot use this method from Swift due to incompatibilities between Swift and Objective-C variadic implementations. Consider using `` instead. */ @@ -579,15 +597,13 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute select statement - Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. + Executing queries returns an @c FMResultSet object if successful, and @c nil upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the @c lastErrorMessage and @c lastErrorMessage methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. - @param format The SQL to be performed, with `printf`-style escape sequences. - - @param ... Optional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. + @param format The SQL to be performed, with `printf`-style escape sequences, followed by ptional parameters to bind to use in conjunction with the `printf`-style escape sequences in the SQL statement. - @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return A @c FMResultSet for the result set upon success; @c nil upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see executeQuery: @see FMResultSet @@ -595,13 +611,17 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @note This method does not technically perform a traditional printf-style replacement. What this method actually does is replace the printf-style percent sequences with a SQLite `?` placeholder, and then bind values to that placeholder. Thus the following command - [db executeQueryWithFormat:@"SELECT * FROM test WHERE name=%@", @"Gus"]; - +@code +[db executeQueryWithFormat:@"SELECT * FROM test WHERE name=%@", @"Gus"]; +@endcode + is actually replacing the `%@` with `?` placeholder, and then performing something equivalent to `` - - [db executeQuery:@"SELECT * FROM test WHERE name=?", @"Gus"]; - - There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The `WHERE` clause was _not_ `WHERE name='%@'` (like you might have to do if you built a SQL statement using `NSString` method `stringWithFormat`), but rather simply `WHERE name=%@`. + +@code +[db executeQuery:@"SELECT * FROM test WHERE name=?", @"Gus"]; +@endcode + + There are two reasons why this distinction is important. First, the printf-style escape sequences can only be used where it is permissible to use a SQLite `?` placeholder. You can use it only for values in SQL statements, but not for table names or column names or any other non-value context. This method also cannot be used in conjunction with `pragma` statements and the like. Second, note the lack of quotation marks in the SQL. The @c WHERE clause was _not_ `WHERE name='%@'` (like you might have to do if you built a SQL statement using @c NSString method @c stringWithFormat ), but rather simply `WHERE name=%@`. */ @@ -609,15 +629,15 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute select statement - Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. + Executing queries returns an @c FMResultSet object if successful, and @c nil upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the @c lastErrorMessage and @c lastErrorMessage methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. @param sql The SELECT statement to be performed, with optional `?` placeholders. - @param arguments A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + @param arguments A @c NSArray of objects to be used when binding values to the `?` placeholders in the SQL statement. - @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return A @c FMResultSet for the result set upon success; @c nil upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see -executeQuery:values:error: @see FMResultSet @@ -628,11 +648,11 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute select statement - Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. + Executing queries returns an @c FMResultSet object if successful, and @c nil upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the @c lastErrorMessage and @c lastErrorMessage methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. - This is similar to ``, except that this also accepts a pointer to a `NSError` pointer, so that errors can be returned. + This is similar to ``, except that this also accepts a pointer to a @c NSError pointer, so that errors can be returned. In Swift, this throws errors, as if it were defined as follows: @@ -640,11 +660,11 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @param sql The SELECT statement to be performed, with optional `?` placeholders. - @param values A `NSArray` of objects to be used when binding values to the `?` placeholders in the SQL statement. + @param values A @c NSArray of objects to be used when binding values to the `?` placeholders in the SQL statement. - @param error A `NSError` object to receive any error object (if any). + @param error A @c NSError object to receive any error object (if any). - @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return A @c FMResultSet for the result set upon success; @c nil upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) @@ -657,15 +677,15 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Execute select statement - Executing queries returns an `` object if successful, and `nil` upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the `` and `` methods to determine why a query failed. + Executing queries returns an @c FMResultSet object if successful, and @c nil upon failure. Like executing updates, there is a variant that accepts an `NSError **` parameter. Otherwise you should use the @c lastErrorMessage and @c lastErrorMessage methods to determine why a query failed. In order to iterate through the results of your query, you use a `while()` loop. You also need to "step" (via `<[FMResultSet next]>`) from one record to the other. @param sql The SELECT statement to be performed, with optional `?` placeholders. - @param arguments A `NSDictionary` of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. + @param arguments A @c NSDictionary of objects keyed by column names that will be used when binding values to the `?` placeholders in the SQL statement. - @return A `` for the result set upon success; `nil` upon failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return A @c FMResultSet for the result set upon success; @c nil upon failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see FMResultSet @see [`FMResultSet next`](<[FMResultSet next]>) @@ -677,13 +697,19 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { // Documentation forthcoming. - (FMResultSet * _Nullable)executeQuery:(NSString *)sql withVAList:(va_list)args; +/// Prepare SQL statement. +/// +/// @param sql SQL statement to prepare, generally with `?` placeholders. + +- (FMResultSet *)prepare:(NSString *)sql; + ///------------------- /// @name Transactions ///------------------- /** Begin a transaction - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see commit @see rollback @@ -695,7 +721,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { is likely to change in future versions of FMDB, whereby this method will likely eventually adopt standard SQLite behavior and perform deferred transactions. If you really need exclusive tranaction, it is - recommended that you use `beginExclusiveTransaction`, instead, not + recommended that you use @c beginExclusiveTransaction, instead, not only to make your intent explicit, but also to future-proof your code. */ @@ -704,7 +730,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Begin a deferred transaction - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see commit @see rollback @@ -716,7 +742,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Begin an immediate transaction - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see commit @see rollback @@ -728,7 +754,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Begin an exclusive transaction - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see commit @see rollback @@ -742,7 +768,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { Commit a transaction that was initiated with either `` or with ``. - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see beginTransaction @see beginDeferredTransaction @@ -756,7 +782,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { Rollback a transaction that was initiated with either `` or with ``. - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see beginTransaction @see beginDeferredTransaction @@ -793,7 +819,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Whether database has any open result sets - @return `YES` if there are open result sets; `NO` if not. + @return @c YES if there are open result sets; @c NO if not. */ @property (nonatomic, readonly) BOOL hasOpenResultSets; @@ -807,7 +833,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { This method causes any pending database operation to abort and return at its earliest opportunity - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. */ @@ -821,7 +847,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @param key The key to be used. - @return `YES` if success, `NO` on error. + @return @c YES if success, @c NO on error. @see https://www.zetetic.net/sqlcipher/ @@ -834,7 +860,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @param key The key to be used. - @return `YES` if success, `NO` on error. + @return @c YES if success, @c NO on error. @see https://www.zetetic.net/sqlcipher/ @@ -845,9 +871,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Set encryption key using `keyData`. - @param keyData The `NSData` to be used. + @param keyData The @c NSData to be used. - @return `YES` if success, `NO` on error. + @return @c YES if success, @c NO on error. @see https://www.zetetic.net/sqlcipher/ @@ -858,9 +884,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Reset encryption key using `keyData`. - @param keyData The `NSData` to be used. + @param keyData The @c NSData to be used. - @return `YES` if success, `NO` on error. + @return @c YES if success, @c NO on error. @see https://www.zetetic.net/sqlcipher/ @@ -874,7 +900,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /// @name General inquiry methods ///------------------------------ -/** The path of the database file +/** The path of the database file. */ @property (nonatomic, readonly, nullable) NSString *databasePath; @@ -884,7 +910,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @property (nonatomic, readonly, nullable) NSURL *databaseURL; -/** The underlying SQLite handle +/** The underlying SQLite handle . @return The `sqlite3` pointer. @@ -901,9 +927,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { Returns the English-language text that describes the most recent failed SQLite API call associated with a database connection. If a prior API call failed but the most recent API call succeeded, this return value is undefined. - @return `NSString` of the last error message. + @return @c NSString of the last error message. - @see [sqlite3_errmsg()](http://sqlite.org/c3ref/errcode.html) + @see [sqlite3_errmsg()](https://sqlite.org/c3ref/errcode.html) @see lastErrorCode @see lastError @@ -917,7 +943,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @return Integer value of the last error code. - @see [sqlite3_errcode()](http://sqlite.org/c3ref/errcode.html) + @see [sqlite3_errcode()](https://sqlite.org/c3ref/errcode.html) @see lastErrorMessage @see lastError @@ -931,9 +957,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @return Integer value of the last extended error code. - @see [sqlite3_errcode()](http://sqlite.org/c3ref/errcode.html) - @see [2. Primary Result Codes versus Extended Result Codes](http://sqlite.org/rescode.html#primary_result_codes_versus_extended_result_codes) - @see [5. Extended Result Code List](http://sqlite.org/rescode.html#extrc) + @see [sqlite3_errcode()](https://sqlite.org/c3ref/errcode.html) + @see [2. Primary Result Codes versus Extended Result Codes](https://sqlite.org/rescode.html#primary_result_codes_versus_extended_result_codes) + @see [5. Extended Result Code List](https://sqlite.org/rescode.html#extrc) @see lastErrorMessage @see lastError @@ -943,7 +969,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Had error - @return `YES` if there was an error, `NO` if no error. + @return @c YES if there was an error, @c NO if no error. @see lastError @see lastErrorCode @@ -955,7 +981,7 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Last error - @return `NSError` representing the last error. + @return @c NSError representing the last error. @see lastErrorCode @see lastErrorMessage @@ -977,50 +1003,50 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @param name Name of save point. - @param outErr A `NSError` object to receive any error object (if any). + @param outErr A @c NSError object to receive any error object (if any). - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see releaseSavePointWithName:error: @see rollbackToSavePointWithName:error: */ -- (BOOL)startSavePointWithName:(NSString*)name error:(NSError * _Nullable *)outErr; +- (BOOL)startSavePointWithName:(NSString*)name error:(NSError * _Nullable __autoreleasing *)outErr; /** Release save point @param name Name of save point. - @param outErr A `NSError` object to receive any error object (if any). + @param outErr A @c NSError object to receive any error object (if any). - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see startSavePointWithName:error: @see rollbackToSavePointWithName:error: */ -- (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError * _Nullable *)outErr; +- (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError * _Nullable __autoreleasing *)outErr; /** Roll back to save point @param name Name of save point. - @param outErr A `NSError` object to receive any error object (if any). + @param outErr A @c NSError object to receive any error object (if any). - @return `YES` on success; `NO` on failure. If failed, you can call ``, ``, or `` for diagnostic information regarding the failure. + @return @c YES on success; @c NO on failure. If failed, you can call @c lastError , @c lastErrorCode , or @c lastErrorMessage for diagnostic information regarding the failure. @see startSavePointWithName:error: @see releaseSavePointWithName:error: */ -- (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError * _Nullable *)outErr; +- (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError * _Nullable __autoreleasing *)outErr; /** Start save point @param block Block of code to perform from within save point. - @return The NSError corresponding to the error, if any. If no error, returns `nil`. + @return The NSError corresponding to the error, if any. If no error, returns @c nil . @see startSavePointWithName:error: @see releaseSavePointWithName:error: @@ -1037,18 +1063,18 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Performs a WAL checkpoint - @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 - @param error The NSError corresponding to the error, if any. - @return YES on success, otherwise NO. + @param checkpointMode The checkpoint mode for @c sqlite3_wal_checkpoint_v2 + @param error The @c NSError corresponding to the error, if any. + @return @c YES on success, otherwise @c NO . */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode error:(NSError * _Nullable *)error; /** Performs a WAL checkpoint - @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 - @param name The db name for sqlite3_wal_checkpoint_v2 - @param error The NSError corresponding to the error, if any. - @return YES on success, otherwise NO. + @param checkpointMode The checkpoint mode for @c sqlite3_wal_checkpoint_v2 + @param name The db name for @c sqlite3_wal_checkpoint_v2 + @param error The @c NSError corresponding to the error, if any. + @return @c YES on success, otherwise @c NO . */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString * _Nullable)name error:(NSError * _Nullable *)error; @@ -1057,9 +1083,9 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { @param checkpointMode The checkpoint mode for sqlite3_wal_checkpoint_v2 @param name The db name for sqlite3_wal_checkpoint_v2 @param error The NSError corresponding to the error, if any. - @param logFrameCount If not NULL, then this is set to the total number of frames in the log file or to -1 if the checkpoint could not run because of an error or because the database is not in WAL mode. - @param checkpointCount If not NULL, then this is set to the total number of checkpointed frames in the log file (including any that were already checkpointed before the function was called) or to -1 if the checkpoint could not run due to an error or because the database is not in WAL mode. - @return YES on success, otherwise NO. + @param logFrameCount If not @c NULL , then this is set to the total number of frames in the log file or to -1 if the checkpoint could not run because of an error or because the database is not in WAL mode. + @param checkpointCount If not @c NULL , then this is set to the total number of checkpointed frames in the log file (including any that were already checkpointed before the function was called) or to -1 if the checkpoint could not run due to an error or because the database is not in WAL mode. + @return @c YES on success, otherwise @c NO . */ - (BOOL)checkpoint:(FMDBCheckpointMode)checkpointMode name:(NSString * _Nullable)name logFrameCount:(int * _Nullable)logFrameCount checkpointCount:(int * _Nullable)checkpointCount error:(NSError * _Nullable *)error; @@ -1069,27 +1095,63 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Test to see if the library is threadsafe - @return `NO` if and only if SQLite was compiled with mutexing code omitted due to the SQLITE_THREADSAFE compile-time option being set to 0. + @return @c NO if and only if SQLite was compiled with mutexing code omitted due to the @c SQLITE_THREADSAFE compile-time option being set to 0. - @see [sqlite3_threadsafe()](http://sqlite.org/c3ref/threadsafe.html) + @see [sqlite3_threadsafe()](https://sqlite.org/c3ref/threadsafe.html) */ + (BOOL)isSQLiteThreadSafe; +/** Examine/set limits + + @param type The type of limit. See https://sqlite.org/c3ref/c_limit_attached.html + @param newLimit The new limit value. Use -1 if you don't want to change the limit, but rather only want to check it. + + @return Regardless, returns previous value. + + @see [sqlite3_limit()](https://sqlite.org/c3ref/limit.html) +*/ + +- (int)limitFor:(int)type value:(int)newLimit; + /** Run-time library version numbers @return The sqlite library version string. - @see [sqlite3_libversion()](http://sqlite.org/c3ref/libversion.html) + @see [sqlite3_libversion()](https://sqlite.org/c3ref/libversion.html) */ + (NSString*)sqliteLibVersion; +/// The FMDB version number as a string in the form of @c "2.7.8" . +/// +/// If you want to compare version number strings, you can use NSNumericSearch option: +/// +/// @code +/// NSComparisonResult result = [[FMDatabase FMDBUserVersion] compare:@"2.11.0" options:NSNumericSearch]; +/// @endcode +/// +/// @returns The version number string. + (NSString*)FMDBUserVersion; -+ (SInt32)FMDBVersion; +/** The FMDB version + + This returns the FMDB as hexadecimal value, e.g., @c 0x0243 for version 2.4.3. + + @warning This routine will not work if any component of the version number exceeds 15. + For example, if it is version @c 2.17.3 , this will max out at @c 0x2f3. + For this reason, we would recommend using @c FMDBUserVersion and with @c NSNumericSearch option, e.g. + + @code + NSComparisonResult result = [[FMDatabase FMDBUserVersion] compare:@"2.11.0" options:NSNumericSearch]; + @endcode + + @returns The version number in hexadecimal, e.g., @c 0x0243 for version 2.4.3. If any component exceeds what can be + can be represented in four bits, we'll max it out at @c 0xf . + */ ++ (SInt32)FMDBVersion __deprecated_msg("Use FMDBUserVersion instead"); ///------------------------ /// @name Make SQL function @@ -1098,46 +1160,40 @@ typedef NS_ENUM(int, FMDBCheckpointMode) { /** Adds SQL functions or aggregates or to redefine the behavior of existing SQL functions or aggregates. For example: - - [db makeFunctionNamed:@"RemoveDiacritics" arguments:1 block:^(void *context, int argc, void **argv) { - SqliteValueType type = [self.db valueType:argv[0]]; - if (type == SqliteValueTypeNull) { - [self.db resultNullInContext:context]; - return; - } - if (type != SqliteValueTypeText) { - [self.db resultError:@"Expected text" context:context]; - return; - } - NSString *string = [self.db valueString:argv[0]]; - NSString *result = [string stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:nil]; - [self.db resultString:result context:context]; - }]; - - FMResultSet *rs = [db executeQuery:@"SELECT * FROM employees WHERE RemoveDiacritics(first_name) LIKE 'jose'"]; - NSAssert(rs, @"Error %@", [db lastErrorMessage]); - + +@code +[db makeFunctionNamed:@"RemoveDiacritics" arguments:1 block:^(void *context, int argc, void **argv) { + SqliteValueType type = [self.db valueType:argv[0]]; + if (type == SqliteValueTypeNull) { + [self.db resultNullInContext:context]; + return; + } + if (type != SqliteValueTypeText) { + [self.db resultError:@"Expected text" context:context]; + return; + } + NSString *string = [self.db valueString:argv[0]]; + NSString *result = [string stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:nil]; + [self.db resultString:result context:context]; +}]; + +FMResultSet *rs = [db executeQuery:@"SELECT * FROM employees WHERE RemoveDiacritics(first_name) LIKE 'jose'"]; +NSAssert(rs, @"Error %@", [db lastErrorMessage]); +@endcode + @param name Name of function. @param arguments Maximum number of parameters. @param block The block of code for the function. - @see [sqlite3_create_function()](http://sqlite.org/c3ref/create_function.html) + @see [sqlite3_create_function()](https://sqlite.org/c3ref/create_function.html) */ - (void)makeFunctionNamed:(NSString *)name arguments:(int)arguments block:(void (^)(void *context, int argc, void * _Nonnull * _Nonnull argv))block; - (void)makeFunctionNamed:(NSString *)name maximumArguments:(int)count withBlock:(void (^)(void *context, int argc, void * _Nonnull * _Nonnull argv))block __deprecated_msg("Use makeFunctionNamed:arguments:block:"); -typedef NS_ENUM(int, SqliteValueType) { - SqliteValueTypeInteger = 1, - SqliteValueTypeFloat = 2, - SqliteValueTypeText = 3, - SqliteValueTypeBlob = 4, - SqliteValueTypeNull = 5 -}; - - (SqliteValueType)valueType:(void *)argv; /** @@ -1171,7 +1227,7 @@ typedef NS_ENUM(int, SqliteValueType) { - (double)valueDouble:(void *)value; /** - Get `NSData` value of parameter in custom function. + Get @c NSData value of parameter in custom function. @param value The argument whose value to return. @return The data object. @@ -1230,9 +1286,9 @@ typedef NS_ENUM(int, SqliteValueType) { - (void)resultDouble:(double)value context:(void *)context; /** - Return `NSData` object from custom function. + Return @c NSData object from custom function. - @param data The `NSData` object to be returned. + @param data The @c NSData object to be returned. @param context The context to which the value will be returned. @see makeFunctionNamed:arguments:block: @@ -1291,17 +1347,19 @@ typedef NS_ENUM(int, SqliteValueType) { /// @name Date formatter ///--------------------- -/** Generate an `NSDateFormatter` that won't be broken by permutations of timezones or locales. +/** Generate an @c NSDateFormatter that won't be broken by permutations of timezones or locales. Use this method to generate values to set the dateFormat property. Example: - myDB.dateFormat = [FMDatabase storeableDateFormat:@"yyyy-MM-dd HH:mm:ss"]; +@code +myDB.dateFormat = [FMDatabase storeableDateFormat:@"yyyy-MM-dd HH:mm:ss"]; +@endcode @param format A valid NSDateFormatter format string. - @return A `NSDateFormatter` that can be used for converting dates to strings and vice versa. + @return A @c NSDateFormatter that can be used for converting dates to strings and vice versa. @see hasDateFormatter @see setDateFormat: @@ -1309,7 +1367,7 @@ typedef NS_ENUM(int, SqliteValueType) { @see stringFromDate: @see storeableDateFormat: - @warning Note that `NSDateFormatter` is not thread-safe, so the formatter generated by this method should be assigned to only one FMDB instance and should not be used for other purposes. + @warning Note that @c NSDateFormatter is not thread-safe, so the formatter generated by this method should be assigned to only one FMDB instance and should not be used for other purposes. */ @@ -1317,7 +1375,7 @@ typedef NS_ENUM(int, SqliteValueType) { /** Test whether the database has a date formatter assigned. - @return `YES` if there is a date formatter; `NO` if not. + @return @c YES if there is a date formatter; @c NO if not. @see hasDateFormatter @see setDateFormat: @@ -1330,7 +1388,7 @@ typedef NS_ENUM(int, SqliteValueType) { /** Set to a date formatter to use string dates with sqlite instead of the default UNIX timestamps. - @param format Set to nil to use UNIX timestamps. Defaults to nil. Should be set using a formatter generated using FMDatabase::storeableDateFormat. + @param format Set to nil to use UNIX timestamps. Defaults to nil. Should be set using a formatter generated using @c FMDatabase:storeableDateFormat . @see hasDateFormatter @see setDateFormat: @@ -1338,16 +1396,16 @@ typedef NS_ENUM(int, SqliteValueType) { @see stringFromDate: @see storeableDateFormat: - @warning Note there is no direct getter for the `NSDateFormatter`, and you should not use the formatter you pass to FMDB for other purposes, as `NSDateFormatter` is not thread-safe. + @warning Note there is no direct getter for the @c NSDateFormatter , and you should not use the formatter you pass to FMDB for other purposes, as @c NSDateFormatter is not thread-safe. */ - (void)setDateFormat:(NSDateFormatter * _Nullable)format; /** Convert the supplied NSString to NSDate, using the current database formatter. - @param s `NSString` to convert to `NSDate`. + @param s @c NSString to convert to @c NSDate . - @return The `NSDate` object; or `nil` if no formatter is set. + @return The @c NSDate object; or @c nil if no formatter is set. @see hasDateFormatter @see setDateFormat: @@ -1360,9 +1418,9 @@ typedef NS_ENUM(int, SqliteValueType) { /** Convert the supplied NSDate to NSString, using the current database formatter. - @param date `NSDate` of date to convert to `NSString`. + @param date @c NSDate of date to convert to @c NSString . - @return The `NSString` representation of the date; `nil` if no formatter is set. + @return The @c NSString representation of the date; @c nil if no formatter is set. @see hasDateFormatter @see setDateFormat: @@ -1376,15 +1434,15 @@ typedef NS_ENUM(int, SqliteValueType) { @end -/** Objective-C wrapper for `sqlite3_stmt` +/** Objective-C wrapper for @c sqlite3_stmt - This is a wrapper for a SQLite `sqlite3_stmt`. Generally when using FMDB you will not need to interact directly with `FMStatement`, but rather with `` and `` only. + This is a wrapper for a SQLite @c sqlite3_stmt . Generally when using FMDB you will not need to interact directly with `FMStatement`, but rather with @c FMDatabase and @c FMResultSet only. - ### See also + See also - - `` - - `` - - [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html) + - @c FMDatabase + - @c FMResultSet + - [@c sqlite3_stmt ](https://sqlite.org/c3ref/stmt.html) */ @interface FMStatement : NSObject { @@ -1408,7 +1466,7 @@ typedef NS_ENUM(int, SqliteValueType) { /** SQLite sqlite3_stmt - @see [`sqlite3_stmt`](http://www.sqlite.org/c3ref/stmt.html) + @see [@c sqlite3_stmt ](https://sqlite.org/c3ref/stmt.html) */ @property (atomic, assign) void *statement; diff --git a/Pods/FMDB/src/fmdb/FMDatabase.m b/Pods/FMDB/src/fmdb/FMDatabase.m index 84d8d684..d2fdfc06 100644 --- a/Pods/FMDB/src/fmdb/FMDatabase.m +++ b/Pods/FMDB/src/fmdb/FMDatabase.m @@ -8,6 +8,10 @@ #import #endif +// MARK: - FMDatabase Private Extension + +NS_ASSUME_NONNULL_BEGIN + @interface FMDatabase () { void* _db; BOOL _isExecutingStatement; @@ -19,15 +23,24 @@ @interface FMDatabase () { NSDateFormatter *_dateFormat; } -NS_ASSUME_NONNULL_BEGIN +- (FMResultSet * _Nullable)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args shouldBind:(BOOL)shouldBind; +- (BOOL)executeUpdate:(NSString *)sql error:(NSError * _Nullable __autoreleasing *)outErr withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; -- (FMResultSet * _Nullable)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; -- (BOOL)executeUpdate:(NSString *)sql error:(NSError * _Nullable *)outErr withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; +@end -NS_ASSUME_NONNULL_END +// MARK: - FMResultSet Private Extension + +@interface FMResultSet () + +- (int)internalStepWithError:(NSError * _Nullable __autoreleasing *)outErr; ++ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB shouldAutoClose:(BOOL)shouldAutoClose; @end +NS_ASSUME_NONNULL_END + +// MARK: - FMDatabase + @implementation FMDatabase // Because these two properties have all of their accessor methods implemented, @@ -99,13 +112,9 @@ - (NSURL *)databaseURL { } + (NSString*)FMDBUserVersion { - return @"2.7.5"; + return @"2.7.8"; } -// returns 0x0240 for version 2.4. This makes it super easy to do things like: -// /* need to make sure to do X with FMDB version 2.4 or later */ -// if ([FMDatabase FMDBVersion] >= 0x0240) { … } - + (SInt32)FMDBVersion { // we go through these hoops so that we only have to change the version number in a single spot. @@ -115,15 +124,19 @@ + (SInt32)FMDBVersion { dispatch_once(&once, ^{ NSString *prodVersion = [self FMDBUserVersion]; - if ([[prodVersion componentsSeparatedByString:@"."] count] < 3) { + while ([[prodVersion componentsSeparatedByString:@"."] count] < 3) { prodVersion = [prodVersion stringByAppendingString:@".0"]; } - - NSString *junk = [prodVersion stringByReplacingOccurrencesOfString:@"." withString:@""]; - - char *e = nil; - FMDBVersionVal = (int) strtoul([junk UTF8String], &e, 16); - + + NSArray *components = [prodVersion componentsSeparatedByString:@"."]; + for (NSUInteger i = 0; i < 3; i++) { + SInt32 component = [components[i] intValue]; + if (component > 15) { + NSLog(@"FMDBVersion is invalid: Please use FMDBUserVersion instead."); + component = 15; + } + FMDBVersionVal = FMDBVersionVal << 4 | component; + } }); return FMDBVersionVal; @@ -158,6 +171,10 @@ - (const char*)sqlitePath { } +- (int)limitFor:(int)type value:(int)newLimit { + return sqlite3_limit(_db, type, newLimit); +} + #pragma mark Open and close database - (BOOL)open { @@ -250,6 +267,7 @@ - (BOOL)close { while ((pStmt = sqlite3_next_stmt(_db, nil)) !=0) { NSLog(@"Closing leaked statement"); sqlite3_finalize(pStmt); + pStmt = 0x00; retry = YES; } } @@ -497,12 +515,29 @@ - (BOOL)goodConnection { return NO; } +#ifdef SQLCIPHER_CRYPTO + // Starting with Xcode8 / iOS 10 we check to make sure we really are linked with + // SQLCipher because there is no longer a linker error if we accidently link + // with unencrypted sqlite library. + // + // https://discuss.zetetic.net/t/important-advisory-sqlcipher-with-xcode-8-and-new-sdks/1688 + + FMResultSet *rs = [self executeQuery:@"PRAGMA cipher_version"]; + + if ([rs next]) { + NSLog(@"SQLCipher version: %@", rs.resultDictionary[@"cipher_version"]); + + [rs close]; + return YES; + } +#else FMResultSet *rs = [self executeQuery:@"select name from sqlite_master where type='table'"]; if (rs) { [rs close]; return YES; } +#endif return NO; } @@ -602,10 +637,10 @@ - (int)changes { #pragma mark SQL manipulation -- (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt { +- (int)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt { if ((!obj) || ((NSNull *)obj == [NSNull null])) { - sqlite3_bind_null(pStmt, idx); + return sqlite3_bind_null(pStmt, idx); } // FIXME - someday check the return codes on these binds. @@ -616,62 +651,61 @@ - (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt { // Don't pass a NULL pointer, or sqlite will bind a SQL null instead of a blob. bytes = ""; } - sqlite3_bind_blob(pStmt, idx, bytes, (int)[obj length], SQLITE_STATIC); + return sqlite3_bind_blob(pStmt, idx, bytes, (int)[obj length], SQLITE_TRANSIENT); } else if ([obj isKindOfClass:[NSDate class]]) { if (self.hasDateFormatter) - sqlite3_bind_text(pStmt, idx, [[self stringFromDate:obj] UTF8String], -1, SQLITE_STATIC); + return sqlite3_bind_text(pStmt, idx, [[self stringFromDate:obj] UTF8String], -1, SQLITE_TRANSIENT); else - sqlite3_bind_double(pStmt, idx, [obj timeIntervalSince1970]); + return sqlite3_bind_double(pStmt, idx, [obj timeIntervalSince1970]); } else if ([obj isKindOfClass:[NSNumber class]]) { if (strcmp([obj objCType], @encode(char)) == 0) { - sqlite3_bind_int(pStmt, idx, [obj charValue]); + return sqlite3_bind_int(pStmt, idx, [obj charValue]); } else if (strcmp([obj objCType], @encode(unsigned char)) == 0) { - sqlite3_bind_int(pStmt, idx, [obj unsignedCharValue]); + return sqlite3_bind_int(pStmt, idx, [obj unsignedCharValue]); } else if (strcmp([obj objCType], @encode(short)) == 0) { - sqlite3_bind_int(pStmt, idx, [obj shortValue]); + return sqlite3_bind_int(pStmt, idx, [obj shortValue]); } else if (strcmp([obj objCType], @encode(unsigned short)) == 0) { - sqlite3_bind_int(pStmt, idx, [obj unsignedShortValue]); + return sqlite3_bind_int(pStmt, idx, [obj unsignedShortValue]); } else if (strcmp([obj objCType], @encode(int)) == 0) { - sqlite3_bind_int(pStmt, idx, [obj intValue]); + return sqlite3_bind_int(pStmt, idx, [obj intValue]); } else if (strcmp([obj objCType], @encode(unsigned int)) == 0) { - sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedIntValue]); + return sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedIntValue]); } else if (strcmp([obj objCType], @encode(long)) == 0) { - sqlite3_bind_int64(pStmt, idx, [obj longValue]); + return sqlite3_bind_int64(pStmt, idx, [obj longValue]); } else if (strcmp([obj objCType], @encode(unsigned long)) == 0) { - sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedLongValue]); + return sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedLongValue]); } else if (strcmp([obj objCType], @encode(long long)) == 0) { - sqlite3_bind_int64(pStmt, idx, [obj longLongValue]); + return sqlite3_bind_int64(pStmt, idx, [obj longLongValue]); } else if (strcmp([obj objCType], @encode(unsigned long long)) == 0) { - sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedLongLongValue]); + return sqlite3_bind_int64(pStmt, idx, (long long)[obj unsignedLongLongValue]); } else if (strcmp([obj objCType], @encode(float)) == 0) { - sqlite3_bind_double(pStmt, idx, [obj floatValue]); + return sqlite3_bind_double(pStmt, idx, [obj floatValue]); } else if (strcmp([obj objCType], @encode(double)) == 0) { - sqlite3_bind_double(pStmt, idx, [obj doubleValue]); + return sqlite3_bind_double(pStmt, idx, [obj doubleValue]); } else if (strcmp([obj objCType], @encode(BOOL)) == 0) { - sqlite3_bind_int(pStmt, idx, ([obj boolValue] ? 1 : 0)); + return sqlite3_bind_int(pStmt, idx, ([obj boolValue] ? 1 : 0)); } else { - sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_STATIC); + return sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_TRANSIENT); } } - else { - sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_STATIC); - } + + return sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_TRANSIENT); } - (void)extractSQL:(NSString *)sql argumentsList:(va_list)args intoString:(NSMutableString *)cleanedSQL arguments:(NSMutableArray *)arguments { @@ -797,11 +831,10 @@ - (void)extractSQL:(NSString *)sql argumentsList:(va_list)args intoString:(NSMut #pragma mark Execute queries - (FMResultSet *)executeQuery:(NSString *)sql withParameterDictionary:(NSDictionary *)arguments { - return [self executeQuery:sql withArgumentsInArray:nil orDictionary:arguments orVAList:nil]; + return [self executeQuery:sql withArgumentsInArray:nil orDictionary:arguments orVAList:nil shouldBind:true]; } -- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args { - +- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args shouldBind:(BOOL)shouldBind { if (![self databaseExists]) { return 0x00; } @@ -829,7 +862,6 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr } if (!pStmt) { - rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0); if (SQLITE_OK != rc) { @@ -845,35 +877,79 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr } sqlite3_finalize(pStmt); + pStmt = 0x00; _isExecutingStatement = NO; return nil; } } + + if (shouldBind) { + BOOL success = [self bindStatement:pStmt WithArgumentsInArray:arrayArgs orDictionary:dictionaryArgs orVAList:args]; + if (!success) { + return nil; + } + } + + FMDBRetain(statement); // to balance the release below + + if (!statement) { + statement = [[FMStatement alloc] init]; + [statement setStatement:pStmt]; + + if (_shouldCacheStatements && sql) { + [self setCachedStatement:statement forQuery:sql]; + } + } + + // the statement gets closed in rs's dealloc or [rs close]; + // we should only autoclose if we're binding automatically when the statement is prepared + rs = [FMResultSet resultSetWithStatement:statement usingParentDatabase:self shouldAutoClose:shouldBind]; + [rs setQuery:sql]; + + NSValue *openResultSet = [NSValue valueWithNonretainedObject:rs]; + [_openResultSets addObject:openResultSet]; + [statement setUseCount:[statement useCount] + 1]; + + FMDBRelease(statement); + + _isExecutingStatement = NO; + + return rs; +} + +- (BOOL)bindStatement:(sqlite3_stmt *)pStmt WithArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args { id obj; int idx = 0; int queryCount = sqlite3_bind_parameter_count(pStmt); // pointed out by Dominic Yu (thanks!) - + // If dictionaryArgs is passed in, that means we are using sqlite's named parameter support if (dictionaryArgs) { - + for (NSString *dictionaryKey in [dictionaryArgs allKeys]) { - + // Prefix the key with a colon. NSString *parameterName = [[NSString alloc] initWithFormat:@":%@", dictionaryKey]; - + if (_traceExecution) { NSLog(@"%@ = %@", parameterName, [dictionaryArgs objectForKey:dictionaryKey]); } - + // Get the index for the parameter name. int namedIdx = sqlite3_bind_parameter_index(pStmt, [parameterName UTF8String]); - + FMDBRelease(parameterName); - + if (namedIdx > 0) { // Standard binding from here. - [self bindObject:[dictionaryArgs objectForKey:dictionaryKey] toColumn:namedIdx inStatement:pStmt]; + int rc = [self bindObject:[dictionaryArgs objectForKey:dictionaryKey] toColumn:namedIdx inStatement:pStmt]; + if (rc != SQLITE_OK) { + NSLog(@"Error: unable to bind (%d, %s", rc, sqlite3_errmsg(_db)); + sqlite3_finalize(pStmt); + pStmt = 0x00; + _isExecutingStatement = NO; + return false; + } // increment the binding count, so our check below works out idx++; } @@ -883,9 +959,7 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr } } else { - while (idx < queryCount) { - if (arrayArgs && idx < (int)[arrayArgs count]) { obj = [arrayArgs objectAtIndex:(NSUInteger)idx]; } @@ -896,7 +970,7 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr //We ran out of arguments break; } - + if (_traceExecution) { if ([obj isKindOfClass:[NSData class]]) { NSLog(@"data: %ld bytes", (unsigned long)[(NSData*)obj length]); @@ -905,52 +979,36 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr NSLog(@"obj: %@", obj); } } - + idx++; - - [self bindObject:obj toColumn:idx inStatement:pStmt]; + + int rc = [self bindObject:obj toColumn:idx inStatement:pStmt]; + if (rc != SQLITE_OK) { + NSLog(@"Error: unable to bind (%d, %s", rc, sqlite3_errmsg(_db)); + sqlite3_finalize(pStmt); + pStmt = 0x00; + _isExecutingStatement = NO; + return false; + } } } - + if (idx != queryCount) { NSLog(@"Error: the bind count is not correct for the # of variables (executeQuery)"); sqlite3_finalize(pStmt); + pStmt = 0x00; _isExecutingStatement = NO; - return nil; + return false; } - - FMDBRetain(statement); // to balance the release below - - if (!statement) { - statement = [[FMStatement alloc] init]; - [statement setStatement:pStmt]; - - if (_shouldCacheStatements && sql) { - [self setCachedStatement:statement forQuery:sql]; - } - } - - // the statement gets closed in rs's dealloc or [rs close]; - rs = [FMResultSet resultSetWithStatement:statement usingParentDatabase:self]; - [rs setQuery:sql]; - - NSValue *openResultSet = [NSValue valueWithNonretainedObject:rs]; - [_openResultSets addObject:openResultSet]; - - [statement setUseCount:[statement useCount] + 1]; - - FMDBRelease(statement); - - _isExecutingStatement = NO; - - return rs; + + return true; } - (FMResultSet *)executeQuery:(NSString*)sql, ... { va_list args; va_start(args, sql); - id result = [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:args]; + id result = [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:args shouldBind:true]; va_end(args); return result; @@ -970,11 +1028,11 @@ - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ... { } - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments { - return [self executeQuery:sql withArgumentsInArray:arguments orDictionary:nil orVAList:nil]; + return [self executeQuery:sql withArgumentsInArray:arguments orDictionary:nil orVAList:nil shouldBind:true]; } - (FMResultSet *)executeQuery:(NSString *)sql values:(NSArray *)values error:(NSError * __autoreleasing *)error { - FMResultSet *rs = [self executeQuery:sql withArgumentsInArray:values orDictionary:nil orVAList:nil]; + FMResultSet *rs = [self executeQuery:sql withArgumentsInArray:values orDictionary:nil orVAList:nil shouldBind:true]; if (!rs && error) { *error = [self lastError]; } @@ -982,234 +1040,22 @@ - (FMResultSet *)executeQuery:(NSString *)sql values:(NSArray *)values error:(NS } - (FMResultSet *)executeQuery:(NSString*)sql withVAList:(va_list)args { - return [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:args]; + return [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:args shouldBind:true]; } #pragma mark Execute updates -- (BOOL)executeUpdate:(NSString*)sql error:(NSError**)outErr withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args { - - if (![self databaseExists]) { - return NO; - } - - if (_isExecutingStatement) { - [self warnInUse]; - return NO; - } - - _isExecutingStatement = YES; - - int rc = 0x00; - sqlite3_stmt *pStmt = 0x00; - FMStatement *cachedStmt = 0x00; - - if (_traceExecution && sql) { - NSLog(@"%@ executeUpdate: %@", self, sql); - } - - if (_shouldCacheStatements) { - cachedStmt = [self cachedStatementForQuery:sql]; - pStmt = cachedStmt ? [cachedStmt statement] : 0x00; - [cachedStmt reset]; - } - - if (!pStmt) { - rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0); - - if (SQLITE_OK != rc) { - if (_logsErrors) { - NSLog(@"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]); - NSLog(@"DB Query: %@", sql); - NSLog(@"DB Path: %@", _databasePath); - } - - if (_crashOnErrors) { - NSAssert(false, @"DB Error: %d \"%@\"", [self lastErrorCode], [self lastErrorMessage]); - abort(); - } - - if (outErr) { - *outErr = [self errorWithMessage:[NSString stringWithUTF8String:sqlite3_errmsg(_db)]]; - } - - sqlite3_finalize(pStmt); - - _isExecutingStatement = NO; - return NO; - } - } - - id obj; - int idx = 0; - int queryCount = sqlite3_bind_parameter_count(pStmt); - - // If dictionaryArgs is passed in, that means we are using sqlite's named parameter support - if (dictionaryArgs) { - - for (NSString *dictionaryKey in [dictionaryArgs allKeys]) { - - // Prefix the key with a colon. - NSString *parameterName = [[NSString alloc] initWithFormat:@":%@", dictionaryKey]; - - if (_traceExecution) { - NSLog(@"%@ = %@", parameterName, [dictionaryArgs objectForKey:dictionaryKey]); - } - // Get the index for the parameter name. - int namedIdx = sqlite3_bind_parameter_index(pStmt, [parameterName UTF8String]); - - FMDBRelease(parameterName); - - if (namedIdx > 0) { - // Standard binding from here. - [self bindObject:[dictionaryArgs objectForKey:dictionaryKey] toColumn:namedIdx inStatement:pStmt]; - - // increment the binding count, so our check below works out - idx++; - } - else { - NSString *message = [NSString stringWithFormat:@"Could not find index for %@", dictionaryKey]; - - if (_logsErrors) { - NSLog(@"%@", message); - } - if (outErr) { - *outErr = [self errorWithMessage:message]; - } - } - } - } - else { - - while (idx < queryCount) { - - if (arrayArgs && idx < (int)[arrayArgs count]) { - obj = [arrayArgs objectAtIndex:(NSUInteger)idx]; - } - else if (args) { - obj = va_arg(args, id); - } - else { - //We ran out of arguments - break; - } - - if (_traceExecution) { - if ([obj isKindOfClass:[NSData class]]) { - NSLog(@"data: %ld bytes", (unsigned long)[(NSData*)obj length]); - } - else { - NSLog(@"obj: %@", obj); - } - } - - idx++; - - [self bindObject:obj toColumn:idx inStatement:pStmt]; - } - } - - - if (idx != queryCount) { - NSString *message = [NSString stringWithFormat:@"Error: the bind count (%d) is not correct for the # of variables in the query (%d) (%@) (executeUpdate)", idx, queryCount, sql]; - if (_logsErrors) { - NSLog(@"%@", message); - } - if (outErr) { - *outErr = [self errorWithMessage:message]; - } - - sqlite3_finalize(pStmt); - _isExecutingStatement = NO; - return NO; - } - - /* Call sqlite3_step() to run the virtual machine. Since the SQL being - ** executed is not a SELECT statement, we assume no data will be returned. - */ - - rc = sqlite3_step(pStmt); - - if (SQLITE_DONE == rc) { - // all is well, let's return. - } - else if (SQLITE_INTERRUPT == rc) { - if (_logsErrors) { - NSLog(@"Error calling sqlite3_step. Query was interrupted (%d: %s) SQLITE_INTERRUPT", rc, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); - } - } - else if (rc == SQLITE_ROW) { - NSString *message = [NSString stringWithFormat:@"A executeUpdate is being called with a query string '%@'", sql]; - if (_logsErrors) { - NSLog(@"%@", message); - NSLog(@"DB Query: %@", sql); - } - if (outErr) { - *outErr = [self errorWithMessage:message]; - } - } - else { +- (BOOL)executeUpdate:(NSString*)sql error:(NSError * _Nullable __autoreleasing *)outErr withArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args { + FMResultSet *rs = [self executeQuery:sql withArgumentsInArray:arrayArgs orDictionary:dictionaryArgs orVAList:args shouldBind:true]; + if (!rs) { if (outErr) { - *outErr = [self errorWithMessage:[NSString stringWithUTF8String:sqlite3_errmsg(_db)]]; - } - - if (SQLITE_ERROR == rc) { - if (_logsErrors) { - NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_ERROR", rc, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); - } - } - else if (SQLITE_MISUSE == rc) { - // uh oh. - if (_logsErrors) { - NSLog(@"Error calling sqlite3_step (%d: %s) SQLITE_MISUSE", rc, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); - } - } - else { - // wtf? - if (_logsErrors) { - NSLog(@"Unknown error calling sqlite3_step (%d: %s) eu", rc, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); - } - } - } - - if (_shouldCacheStatements && !cachedStmt) { - cachedStmt = [[FMStatement alloc] init]; - - [cachedStmt setStatement:pStmt]; - - [self setCachedStatement:cachedStmt forQuery:sql]; - - FMDBRelease(cachedStmt); - } - - int closeErrorCode; - - if (cachedStmt) { - [cachedStmt setUseCount:[cachedStmt useCount] + 1]; - closeErrorCode = sqlite3_reset(pStmt); - } - else { - /* Finalize the virtual machine. This releases all memory and other - ** resources allocated by the sqlite3_prepare() call above. - */ - closeErrorCode = sqlite3_finalize(pStmt); - } - - if (closeErrorCode != SQLITE_OK) { - if (_logsErrors) { - NSLog(@"Unknown error finalizing or resetting statement (%d: %s)", closeErrorCode, sqlite3_errmsg(_db)); - NSLog(@"DB Query: %@", sql); + *outErr = [self lastError]; } + return false; } - - _isExecutingStatement = NO; - return (rc == SQLITE_DONE || rc == SQLITE_OK); -} + return [rs internalStepWithError:outErr] == SQLITE_DONE; +} - (BOOL)executeUpdate:(NSString*)sql, ... { va_list args; @@ -1286,13 +1132,15 @@ - (BOOL)executeStatements:(NSString *)sql withResultBlock:(__attribute__((noesca if (errmsg && [self logsErrors]) { NSLog(@"Error inserting batch: %s", errmsg); + } + if (errmsg) { sqlite3_free(errmsg); } return (rc == SQLITE_OK); } -- (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... { +- (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError * _Nullable __autoreleasing *)outErr, ... { va_list args; va_start(args, outErr); @@ -1306,7 +1154,7 @@ - (BOOL)executeUpdate:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-implementations" -- (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... { +- (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError * _Nullable __autoreleasing *)outErr, ... { va_list args; va_start(args, outErr); @@ -1318,6 +1166,12 @@ - (BOOL)update:(NSString*)sql withErrorAndBindings:(NSError**)outErr, ... { #pragma clang diagnostic pop +#pragma mark Prepare + +- (FMResultSet *)prepare:(NSString *)sql { + return [self executeQuery:sql withArgumentsInArray:nil orDictionary:nil orVAList:nil shouldBind:false]; +} + #pragma mark Transactions - (BOOL)rollback { @@ -1397,7 +1251,7 @@ - (BOOL)interrupt return [savepointName stringByReplacingOccurrencesOfString:@"'" withString:@"''"]; } -- (BOOL)startSavePointWithName:(NSString*)name error:(NSError**)outErr { +- (BOOL)startSavePointWithName:(NSString*)name error:(NSError * _Nullable __autoreleasing *)outErr { #if SQLITE_VERSION_NUMBER >= 3007000 NSParameterAssert(name); @@ -1411,7 +1265,7 @@ - (BOOL)startSavePointWithName:(NSString*)name error:(NSError**)outErr { #endif } -- (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError**)outErr { +- (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError * _Nullable __autoreleasing *)outErr { #if SQLITE_VERSION_NUMBER >= 3007000 NSParameterAssert(name); @@ -1425,7 +1279,7 @@ - (BOOL)releaseSavePointWithName:(NSString*)name error:(NSError**)outErr { #endif } -- (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError**)outErr { +- (BOOL)rollbackToSavePointWithName:(NSString*)name error:(NSError * _Nullable __autoreleasing *)outErr { #if SQLITE_VERSION_NUMBER >= 3007000 NSParameterAssert(name); @@ -1631,7 +1485,7 @@ - (void)resultErrorTooBigInContext:(void *)context { @end - +// MARK: - FMStatement @implementation FMStatement diff --git a/Pods/FMDB/src/fmdb/FMDatabaseAdditions.h b/Pods/FMDB/src/fmdb/FMDatabaseAdditions.h index 6e8c4737..0234fc75 100644 --- a/Pods/FMDB/src/fmdb/FMDatabaseAdditions.h +++ b/Pods/FMDB/src/fmdb/FMDatabaseAdditions.h @@ -11,11 +11,11 @@ NS_ASSUME_NONNULL_BEGIN -/** Category of additions for `` class. +/** Category of additions for @c FMDatabase class. - ### See also + See also - - `` + - @c FMDatabase */ @interface FMDatabase (FMDatabaseAdditions) @@ -24,24 +24,22 @@ NS_ASSUME_NONNULL_BEGIN /// @name Return results of SQL to variable ///---------------------------------------- -/** Return `int` value for query +/** Return @c int value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. - @return `int` value. + @return @c int value. @note This is not available from Swift. */ - (int)intForQuery:(NSString*)query, ...; -/** Return `long` value for query +/** Return @c long value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. - @return `long` value. + @return @c long value. @note This is not available from Swift. */ @@ -50,8 +48,7 @@ NS_ASSUME_NONNULL_BEGIN /** Return `BOOL` value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. @return `BOOL` value. @@ -62,8 +59,7 @@ NS_ASSUME_NONNULL_BEGIN /** Return `double` value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. @return `double` value. @@ -72,36 +68,33 @@ NS_ASSUME_NONNULL_BEGIN - (double)doubleForQuery:(NSString*)query, ...; -/** Return `NSString` value for query +/** Return @c NSString value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. - @return `NSString` value. + @return @c NSString value. @note This is not available from Swift. */ - (NSString * _Nullable)stringForQuery:(NSString*)query, ...; -/** Return `NSData` value for query +/** Return @c NSData value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. - @return `NSData` value. + @return @c NSData value. @note This is not available from Swift. */ - (NSData * _Nullable)dataForQuery:(NSString*)query, ...; -/** Return `NSDate` value for query +/** Return @c NSDate value for query - @param query The SQL query to be performed. - @param ... A list of parameters that will be bound to the `?` placeholders in the SQL query. + @param query The SQL query to be performed, followed by a list of parameters that will be bound to the `?` placeholders in the SQL query. - @return `NSDate` value. + @return @c NSDate value. @note This is not available from Swift. */ @@ -122,7 +115,7 @@ NS_ASSUME_NONNULL_BEGIN @param tableName The name of the table being looked for. - @return `YES` if table found; `NO` if not found. + @return @c YES if table found; @c NO if not found. */ - (BOOL)tableExists:(NSString*)tableName; @@ -137,9 +130,9 @@ NS_ASSUME_NONNULL_BEGIN - `rootpage` - The page number of the root b-tree page for tables and indices - `sql` - The SQL that created the entity - @return `FMResultSet` of schema; `nil` on error. + @return `FMResultSet` of schema; @c nil on error. - @see [SQLite File Format](http://www.sqlite.org/fileformat.html) + @see [SQLite File Format](https://sqlite.org/fileformat.html) */ - (FMResultSet * _Nullable)getSchema; @@ -161,9 +154,9 @@ NS_ASSUME_NONNULL_BEGIN @param tableName The name of the table for whom the schema will be returned. - @return `FMResultSet` of schema; `nil` on error. + @return `FMResultSet` of schema; @c nil on error. - @see [table_info](http://www.sqlite.org/pragma.html#pragma_table_info) + @see [table_info](https://sqlite.org/pragma.html#pragma_table_info) */ - (FMResultSet * _Nullable)getTableSchema:(NSString*)tableName; @@ -174,7 +167,7 @@ NS_ASSUME_NONNULL_BEGIN @param tableName The name of the table. - @return `YES` if column exists in table in question; `NO` otherwise. + @return @c YES if column exists in table in question; @c NO otherwise. */ - (BOOL)columnExists:(NSString*)columnName inTableWithName:(NSString*)tableName; @@ -185,7 +178,7 @@ NS_ASSUME_NONNULL_BEGIN @param tableName The name of the table. - @return `YES` if column exists in table in question; `NO` otherwise. + @return @c YES if column exists in table in question; @c NO otherwise. @see columnExists:inTableWithName: @@ -201,13 +194,13 @@ NS_ASSUME_NONNULL_BEGIN @param sql The SQL statement being validated. - @param error This is a pointer to a `NSError` object that will receive the autoreleased `NSError` object if there was any error. If this is `nil`, no `NSError` result will be returned. + @param error This is a pointer to a @c NSError object that will receive the autoreleased @c NSError object if there was any error. If this is @c nil , no @c NSError result will be returned. - @return `YES` if validation succeeded without incident; `NO` otherwise. + @return @c YES if validation succeeded without incident; @c NO otherwise. */ -- (BOOL)validateSQL:(NSString*)sql error:(NSError * _Nullable *)error; +- (BOOL)validateSQL:(NSString*)sql error:(NSError * _Nullable __autoreleasing *)error; ///----------------------------------- diff --git a/Pods/FMDB/src/fmdb/FMDatabaseAdditions.m b/Pods/FMDB/src/fmdb/FMDatabaseAdditions.m index 83f6a3b9..2289c13d 100644 --- a/Pods/FMDB/src/fmdb/FMDatabaseAdditions.m +++ b/Pods/FMDB/src/fmdb/FMDatabaseAdditions.m @@ -17,7 +17,7 @@ #endif @interface FMDatabase (PrivateStuff) -- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args; +- (FMResultSet * _Nullable)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray * _Nullable)arrayArgs orDictionary:(NSDictionary * _Nullable)dictionaryArgs orVAList:(va_list)args shouldBind:(BOOL)shouldBind; @end @implementation FMDatabase (FMDatabaseAdditions) @@ -25,7 +25,7 @@ @implementation FMDatabase (FMDatabaseAdditions) #define RETURN_RESULT_FOR_QUERY_WITH_SELECTOR(type, sel) \ va_list args; \ va_start(args, query); \ -FMResultSet *resultSet = [self executeQuery:query withArgumentsInArray:0x00 orDictionary:0x00 orVAList:args]; \ +FMResultSet *resultSet = [self executeQuery:query withArgumentsInArray:0x00 orDictionary:0x00 orVAList:args shouldBind:true]; \ va_end(args); \ if (![resultSet next]) { return (type)0; } \ type ret = [resultSet sel:0]; \ @@ -222,7 +222,7 @@ - (BOOL)columnExists:(NSString*)tableName columnName:(NSString*)columnName __att #pragma clang diagnostic pop -- (BOOL)validateSQL:(NSString*)sql error:(NSError**)error { +- (BOOL)validateSQL:(NSString*)sql error:(NSError * _Nullable __autoreleasing *)error { sqlite3_stmt *pStmt = NULL; BOOL validationSucceeded = YES; diff --git a/Pods/FMDB/src/fmdb/FMDatabasePool.h b/Pods/FMDB/src/fmdb/FMDatabasePool.h index 4c472beb..341c05f1 100755 --- a/Pods/FMDB/src/fmdb/FMDatabasePool.h +++ b/Pods/FMDB/src/fmdb/FMDatabasePool.h @@ -12,16 +12,16 @@ NS_ASSUME_NONNULL_BEGIN @class FMDatabase; -/** Pool of `` objects. +/** Pool of @c FMDatabase objects. - ### See also + See also - - `` - - `` + - @c FMDatabaseQueue + - @c FMDatabase - @warning Before using `FMDatabasePool`, please consider using `` instead. + @warning Before using @c FMDatabasePool , please consider using @c FMDatabaseQueue instead. - If you really really really know what you're doing and `FMDatabasePool` is what + If you really really really know what you're doing and @c FMDatabasePool is what you really really need (ie, you're using a read only database), OK you can use it. But just be careful not to deadlock! @@ -38,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN /** Delegate object */ -@property (atomic, assign, nullable) id delegate; +@property (atomic, unsafe_unretained, nullable) id delegate; /** Maximum number of databases to create */ @@ -61,16 +61,16 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ + (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath; /** Create pool using file URL. - @param url The file `NSURL` of the database. + @param url The file @c NSURL of the database. - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ + (instancetype)databasePoolWithURL:(NSURL * _Nullable)url; @@ -80,17 +80,17 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ + (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create pool using file URL and specified flags - @param url The file `NSURL` of the database. + @param url The file @c NSURL of the database. @param openFlags Flags passed to the openWithFlags method of the database. - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ + (instancetype)databasePoolWithURL:(NSURL * _Nullable)url flags:(int)openFlags; @@ -99,7 +99,7 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ - (instancetype)initWithPath:(NSString * _Nullable)aPath; @@ -108,7 +108,7 @@ NS_ASSUME_NONNULL_BEGIN @param url The file `NSURL of the database. - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ - (instancetype)initWithURL:(NSURL * _Nullable)url; @@ -118,17 +118,17 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ - (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create pool using file URL and specified flags. - @param url The file `NSURL` of the database. + @param url The file @c NSURL of the database. @param openFlags Flags passed to the openWithFlags method of the database - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ - (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags; @@ -139,18 +139,18 @@ NS_ASSUME_NONNULL_BEGIN @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ - (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; /** Create pool using file URL and specified flags. - @param url The file `NSURL` of the database. + @param url The file @c NSURL of the database. @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system - @return The `FMDatabasePool` object. `nil` on error. + @return The @c FMDatabasePool object. @c nil on error. */ - (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; @@ -193,14 +193,14 @@ NS_ASSUME_NONNULL_BEGIN /** Synchronously perform database operations in pool. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. */ - (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block; /** Synchronously perform database operations in pool using transaction. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. @warning Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs an exclusive transaction, not a deferred transaction. This behavior @@ -215,32 +215,32 @@ NS_ASSUME_NONNULL_BEGIN /** Synchronously perform database operations in pool using exclusive transaction. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. */ - (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using deferred transaction. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. */ - (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using immediate transactions. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue */ - (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using save point. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. - @return `NSError` object if error; `nil` if successful. + @return @c NSError object if error; @c nil if successful. - @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use `<[FMDatabase startSavePointWithName:error:]>` instead. + @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use @c startSavePointWithName:error: instead. */ - (NSError * _Nullable)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; @@ -257,10 +257,10 @@ NS_ASSUME_NONNULL_BEGIN /** Asks the delegate whether database should be added to the pool. - @param pool The `FMDatabasePool` object. - @param database The `FMDatabase` object. + @param pool The @c FMDatabasePool object. + @param database The @c FMDatabase object. - @return `YES` if it should add database to pool; `NO` if not. + @return @c YES if it should add database to pool; @c NO if not. */ @@ -268,8 +268,8 @@ NS_ASSUME_NONNULL_BEGIN /** Tells the delegate that database was added to the pool. - @param pool The `FMDatabasePool` object. - @param database The `FMDatabase` object. + @param pool The @c FMDatabasePool object. + @param database The @c FMDatabase object. */ diff --git a/Pods/FMDB/src/fmdb/FMDatabaseQueue.h b/Pods/FMDB/src/fmdb/FMDatabaseQueue.h index 27f40128..b3dcf418 100755 --- a/Pods/FMDB/src/fmdb/FMDatabaseQueue.h +++ b/Pods/FMDB/src/fmdb/FMDatabaseQueue.h @@ -11,57 +11,63 @@ NS_ASSUME_NONNULL_BEGIN -/** To perform queries and updates on multiple threads, you'll want to use `FMDatabaseQueue`. +/** To perform queries and updates on multiple threads, you'll want to use @c FMDatabaseQueue . - Using a single instance of `` from multiple threads at once is a bad idea. It has always been OK to make a `` object *per thread*. Just don't share a single instance across threads, and definitely not across multiple threads at the same time. + Using a single instance of @c FMDatabase from multiple threads at once is a bad idea. It has always been OK to make a @c FMDatabase object *per thread*. Just don't share a single instance across threads, and definitely not across multiple threads at the same time. - Instead, use `FMDatabaseQueue`. Here's how to use it: + Instead, use @c FMDatabaseQueue . Here's how to use it: First, make your queue. - FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath]; +@code +FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath]; +@endcode Then use it like so: - [queue inDatabase:^(FMDatabase *db) { - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; +@code +[queue inDatabase:^(FMDatabase *db) { + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; - FMResultSet *rs = [db executeQuery:@"select * from foo"]; - while ([rs next]) { - //… - } - }]; + FMResultSet *rs = [db executeQuery:@"select * from foo"]; + while ([rs next]) { + //… + } +}]; +@endcode An easy way to wrap things up in a transaction can be done like this: - [queue inTransaction:^(FMDatabase *db, BOOL *rollback) { - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; +@code +[queue inTransaction:^(FMDatabase *db, BOOL *rollback) { + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]]; + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]]; - if (whoopsSomethingWrongHappened) { - *rollback = YES; - return; - } - // etc… - [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]]; - }]; + // if (whoopsSomethingWrongHappened) { + // *rollback = YES; + // return; + // } - `FMDatabaseQueue` will run the blocks on a serialized queue (hence the name of the class). So if you call `FMDatabaseQueue`'s methods from multiple threads at the same time, they will be executed in the order they are received. This way queries and updates won't step on each other's toes, and every one is happy. + // etc… + [db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]]; +}]; +@endcode - ### See also + @c FMDatabaseQueue will run the blocks on a serialized queue (hence the name of the class). So if you call @c FMDatabaseQueue 's methods from multiple threads at the same time, they will be executed in the order they are received. This way queries and updates won't step on each other's toes, and every one is happy. - - `` - - @warning Do not instantiate a single `` object and use it across multiple threads. Use `FMDatabaseQueue` instead. + @warning Do not instantiate a single @c FMDatabase object and use it across multiple threads. Use @c FMDatabaseQueue instead. - @warning The calls to `FMDatabaseQueue`'s methods are blocking. So even though you are passing along blocks, they will **not** be run on another thread. + @warning The calls to @c FMDatabaseQueue 's methods are blocking. So even though you are passing along blocks, they will **not** be run on another thread. + + @sa FMDatabase */ @interface FMDatabaseQueue : NSObject + /** Path of database */ @property (atomic, retain, nullable) NSString *path; @@ -82,16 +88,16 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ + (nullable instancetype)databaseQueueWithPath:(NSString * _Nullable)aPath; /** Create queue using file URL. - @param url The file `NSURL` of the database. + @param url The file @c NSURL of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ + (nullable instancetype)databaseQueueWithURL:(NSURL * _Nullable)url; @@ -101,16 +107,16 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ + (nullable instancetype)databaseQueueWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; /** Create queue using file URL and specified flags. - @param url The file `NSURL` of the database. + @param url The file @c NSURL of the database. @param openFlags Flags passed to the openWithFlags method of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ + (nullable instancetype)databaseQueueWithURL:(NSURL * _Nullable)url flags:(int)openFlags; @@ -118,7 +124,7 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ - (nullable instancetype)initWithPath:(NSString * _Nullable)aPath; @@ -127,7 +133,7 @@ NS_ASSUME_NONNULL_BEGIN @param url The file `NSURL of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ - (nullable instancetype)initWithURL:(NSURL * _Nullable)url; @@ -137,7 +143,7 @@ NS_ASSUME_NONNULL_BEGIN @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ - (nullable instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; @@ -147,7 +153,7 @@ NS_ASSUME_NONNULL_BEGIN @param url The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database. - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ - (nullable instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags; @@ -158,7 +164,7 @@ NS_ASSUME_NONNULL_BEGIN @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ - (nullable instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; @@ -169,7 +175,7 @@ NS_ASSUME_NONNULL_BEGIN @param openFlags Flags passed to the openWithFlags method of the database @param vfsName The name of a custom virtual file system - @return The `FMDatabaseQueue` object. `nil` on error. + @return The @c FMDatabaseQueue object. @c nil on error. */ - (nullable instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; @@ -197,14 +203,14 @@ NS_ASSUME_NONNULL_BEGIN /** Synchronously perform database operations on queue. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue */ - (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block; /** Synchronously perform database operations on queue, using transactions. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue @warning Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs an exclusive transaction, not a deferred transaction. This behavior @@ -220,21 +226,21 @@ NS_ASSUME_NONNULL_BEGIN /** Synchronously perform database operations on queue, using deferred transactions. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue */ - (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using exclusive transactions. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue */ - (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations on queue, using immediate transactions. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue */ - (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; @@ -245,7 +251,7 @@ NS_ASSUME_NONNULL_BEGIN /** Synchronously perform database operations using save point. - @param block The code to be run on the queue of `FMDatabaseQueue` + @param block The code to be run on the queue of @c FMDatabaseQueue */ // NOTE: you can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. diff --git a/Pods/FMDB/src/fmdb/FMDatabaseQueue.m b/Pods/FMDB/src/fmdb/FMDatabaseQueue.m index a8fd9153..ceab5393 100755 --- a/Pods/FMDB/src/fmdb/FMDatabaseQueue.m +++ b/Pods/FMDB/src/fmdb/FMDatabaseQueue.m @@ -301,17 +301,13 @@ - (BOOL)checkpoint:(FMDBCheckpointMode)mode name:(NSString *)name error:(NSError - (BOOL)checkpoint:(FMDBCheckpointMode)mode name:(NSString *)name logFrameCount:(int * _Nullable)logFrameCount checkpointCount:(int * _Nullable)checkpointCount error:(NSError * __autoreleasing _Nullable * _Nullable)error { __block BOOL result; - __block NSError *blockError; - + FMDBRetain(self); dispatch_sync(_queue, ^() { - result = [self.database checkpoint:mode name:name logFrameCount:NULL checkpointCount:NULL error:&blockError]; + result = [self.database checkpoint:mode name:name logFrameCount:logFrameCount checkpointCount:checkpointCount error:error]; }); FMDBRelease(self); - if (error) { - *error = blockError; - } return result; } diff --git a/Pods/FMDB/src/fmdb/FMResultSet.h b/Pods/FMDB/src/fmdb/FMResultSet.h index 2bbc766b..08324518 100644 --- a/Pods/FMDB/src/fmdb/FMResultSet.h +++ b/Pods/FMDB/src/fmdb/FMResultSet.h @@ -17,11 +17,21 @@ NS_ASSUME_NONNULL_BEGIN @class FMDatabase; @class FMStatement; -/** Represents the results of executing a query on an ``. +/** Types for columns in a result set. + */ +typedef NS_ENUM(int, SqliteValueType) { + SqliteValueTypeInteger = 1, + SqliteValueTypeFloat = 2, + SqliteValueTypeText = 3, + SqliteValueTypeBlob = 4, + SqliteValueTypeNull = 5 +}; + +/** Represents the results of executing a query on an @c FMDatabase . - ### See also + See also - - `` + - @c FMDatabase */ @interface FMResultSet : NSObject @@ -48,17 +58,6 @@ NS_ASSUME_NONNULL_BEGIN /// @name Creating and closing a result set ///------------------------------------ -/** Create result set from `` - - @param statement A `` to be performed - - @param aDB A `` to be used - - @return A `FMResultSet` on success; `nil` on failure - */ - -+ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB; - /** Close result set */ - (void)close; @@ -71,7 +70,7 @@ NS_ASSUME_NONNULL_BEGIN You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one. - @return `YES` if row successfully retrieved; `NO` if end of result set reached + @return @c YES if row successfully retrieved; @c NO if end of result set reached @see hasAnotherRow */ @@ -89,15 +88,35 @@ NS_ASSUME_NONNULL_BEGIN @see hasAnotherRow */ -- (BOOL)nextWithError:(NSError * _Nullable *)outErr; +- (BOOL)nextWithError:(NSError * _Nullable __autoreleasing *)outErr; + +/** Perform SQL statement. + + @return 'YES' if successful; 'NO' if not. + + @see hasAnotherRow +*/ + +- (BOOL)step; + +/** Perform SQL statement. + + @param outErr A 'NSError' object to receive any error object (if any). + + @return 'YES' if successful; 'NO' if not. + + @see hasAnotherRow +*/ + +- (BOOL)stepWithError:(NSError * _Nullable __autoreleasing *)outErr; /** Did the last call to `` succeed in retrieving another row? - @return `YES` if the last call to `` succeeded in retrieving another record; `NO` if not. - + @return 'YES' if there is another row; 'NO' if not. + @see next - @warning The `hasAnotherRow` method must follow a call to ``. If the previous database interaction was something other than a call to `next`, then this method may return `NO`, whether there is another row of data or not. + @warning The `hasAnotherRow` method must follow a call to ``. If the previous database interaction was something other than a call to `next`, then this method may return @c NO, whether there is another row of data or not. */ - (BOOL)hasAnotherRow; @@ -115,7 +134,7 @@ NS_ASSUME_NONNULL_BEGIN /** Column index for column name - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return Zero-based index for column. */ @@ -126,16 +145,16 @@ NS_ASSUME_NONNULL_BEGIN @param columnIdx Zero-based index for column. - @return columnName `NSString` value of the name of the column. + @return columnName @c NSString value of the name of the column. */ - (NSString * _Nullable)columnNameForIndex:(int)columnIdx; /** Result set integer value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. - @return `int` value of the result set's column. + @return @c int value of the result set's column. */ - (int)intForColumn:(NSString*)columnName; @@ -144,16 +163,16 @@ NS_ASSUME_NONNULL_BEGIN @param columnIdx Zero-based index for column. - @return `int` value of the result set's column. + @return @c int value of the result set's column. */ - (int)intForColumnIndex:(int)columnIdx; -/** Result set `long` value for column. +/** Result set @c long value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. - @return `long` value of the result set's column. + @return @c long value of the result set's column. */ - (long)longForColumn:(NSString*)columnName; @@ -162,14 +181,14 @@ NS_ASSUME_NONNULL_BEGIN @param columnIdx Zero-based index for column. - @return `long` value of the result set's column. + @return @c long value of the result set's column. */ - (long)longForColumnIndex:(int)columnIdx; /** Result set `long long int` value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return `long long int` value of the result set's column. */ @@ -187,7 +206,7 @@ NS_ASSUME_NONNULL_BEGIN /** Result set `unsigned long long int` value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return `unsigned long long int` value of the result set's column. */ @@ -205,7 +224,7 @@ NS_ASSUME_NONNULL_BEGIN /** Result set `BOOL` value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return `BOOL` value of the result set's column. */ @@ -223,7 +242,7 @@ NS_ASSUME_NONNULL_BEGIN /** Result set `double` value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return `double` value of the result set's column. @@ -241,9 +260,9 @@ NS_ASSUME_NONNULL_BEGIN - (double)doubleForColumnIndex:(int)columnIdx; -/** Result set `NSString` value for column. +/** Result set @c NSString value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return String value of the result set's column. @@ -251,7 +270,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSString * _Nullable)stringForColumn:(NSString*)columnName; -/** Result set `NSString` value for column. +/** Result set @c NSString value for column. @param columnIdx Zero-based index for column. @@ -260,16 +279,16 @@ NS_ASSUME_NONNULL_BEGIN - (NSString * _Nullable)stringForColumnIndex:(int)columnIdx; -/** Result set `NSDate` value for column. +/** Result set @c NSDate value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return Date value of the result set's column. */ - (NSDate * _Nullable)dateForColumn:(NSString*)columnName; -/** Result set `NSDate` value for column. +/** Result set @c NSDate value for column. @param columnIdx Zero-based index for column. @@ -279,11 +298,11 @@ NS_ASSUME_NONNULL_BEGIN - (NSDate * _Nullable)dateForColumnIndex:(int)columnIdx; -/** Result set `NSData` value for column. +/** Result set @c NSData value for column. This is useful when storing binary data in table (such as image or the like). - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return Data value of the result set's column. @@ -291,10 +310,13 @@ NS_ASSUME_NONNULL_BEGIN - (NSData * _Nullable)dataForColumn:(NSString*)columnName; -/** Result set `NSData` value for column. +/** Result set @c NSData value for column. @param columnIdx Zero-based index for column. + @warning For zero length BLOBs, this will return `nil`. Use `typeForColumn` to determine whether this was really a zero + length BLOB or `NULL`. + @return Data value of the result set's column. */ @@ -302,7 +324,10 @@ NS_ASSUME_NONNULL_BEGIN /** Result set `(const unsigned char *)` value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. + + @warning For zero length BLOBs, this will return `nil`. Use `typeForColumnIndex` to determine whether this was really a zero + length BLOB or `NULL`. @return `(const unsigned char *)` value of the result set's column. */ @@ -324,7 +349,7 @@ NS_ASSUME_NONNULL_BEGIN @param columnName Name of the column. - @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object. @see objectForKeyedSubscript: */ @@ -333,11 +358,30 @@ NS_ASSUME_NONNULL_BEGIN - (id _Nullable)objectForColumnName:(NSString*)columnName __deprecated_msg("Use objectForColumn instead"); +/** Column type by column name. + + @param columnName Name of the column. + + @return The `SqliteValueType` of the value in this column. + */ + +- (SqliteValueType)typeForColumn:(NSString*)columnName; + +/** Column type by column index. + + @param columnIdx Index of the column. + + @return The `SqliteValueType` of the value in this column. + */ + +- (SqliteValueType)typeForColumnIndex:(int)columnIdx; + + /** Result set object for column. @param columnIdx Zero-based index for column. - @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object. @see objectAtIndexedSubscript: */ @@ -347,20 +391,26 @@ NS_ASSUME_NONNULL_BEGIN /** Result set object for column. This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported: - - id result = rs[@"employee_name"]; - + +@code +id result = rs[@"employee_name"]; +@endcode + This simplified syntax is equivalent to calling: - id result = [rs objectForKeyedSubscript:@"employee_name"]; - +@code +id result = [rs objectForKeyedSubscript:@"employee_name"]; +@endcode + which is, it turns out, equivalent to calling: - id result = [rs objectForColumnName:@"employee_name"]; +@code +id result = [rs objectForColumnName:@"employee_name"]; +@endcode - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. - @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object. */ - (id _Nullable)objectForKeyedSubscript:(NSString *)columnName; @@ -369,26 +419,32 @@ NS_ASSUME_NONNULL_BEGIN This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported: - id result = rs[0]; +@code +id result = rs[0]; +@endcode This simplified syntax is equivalent to calling: - id result = [rs objectForKeyedSubscript:0]; +@code +id result = [rs objectForKeyedSubscript:0]; +@endcode which is, it turns out, equivalent to calling: - id result = [rs objectForColumnName:0]; +@code +id result = [rs objectForColumnName:0]; +@endcode @param columnIdx Zero-based index for column. - @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object. + @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object. */ - (id _Nullable)objectAtIndexedSubscript:(int)columnIdx; -/** Result set `NSData` value for column. +/** Result set @c NSData value for column. - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. @return Data value of the result set's column. @@ -400,7 +456,7 @@ If you don't, you're going to be in a world of hurt when you try and use the dat - (NSData * _Nullable)dataNoCopyForColumn:(NSString *)columnName NS_RETURNS_NOT_RETAINED; -/** Result set `NSData` value for column. +/** Result set @c NSData value for column. @param columnIdx Zero-based index for column. @@ -414,20 +470,20 @@ If you don't, you're going to be in a world of hurt when you try and use the dat - (NSData * _Nullable)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED; -/** Is the column `NULL`? +/** Is the column @c NULL ? @param columnIdx Zero-based index for column. - @return `YES` if column is `NULL`; `NO` if not `NULL`. + @return @c YES if column is @c NULL ; @c NO if not @c NULL . */ - (BOOL)columnIndexIsNull:(int)columnIdx; -/** Is the column `NULL`? +/** Is the column @c NULL ? - @param columnName `NSString` value of the name of the column. + @param columnName @c NSString value of the name of the column. - @return `YES` if column is `NULL`; `NO` if not `NULL`. + @return @c YES if column is @c NULL ; @c NO if not @c NULL . */ - (BOOL)columnIsNull:(NSString*)columnName; @@ -461,7 +517,22 @@ If you don't, you're going to be in a world of hurt when you try and use the dat - (void)kvcMagic:(id)object; - +///----------------------------- +/// @name Binding values +///----------------------------- + +/// Bind array of values to prepared statement. +/// +/// @param array Array of values to bind to SQL statement. + +- (BOOL)bindWithArray:(NSArray*)array; + +/// Bind dictionary of values to prepared statement. +/// +/// @param dictionary Dictionary of values to bind to SQL statement. + +- (BOOL)bindWithDictionary:(NSDictionary *)dictionary; + @end NS_ASSUME_NONNULL_END diff --git a/Pods/FMDB/src/fmdb/FMResultSet.m b/Pods/FMDB/src/fmdb/FMResultSet.m index 13f226f5..f8ce917d 100644 --- a/Pods/FMDB/src/fmdb/FMResultSet.m +++ b/Pods/FMDB/src/fmdb/FMResultSet.m @@ -8,23 +8,31 @@ #import #endif +// MARK: - FMDatabase Private Extension + @interface FMDatabase () - (void)resultSetDidClose:(FMResultSet *)resultSet; +- (BOOL)bindStatement:(sqlite3_stmt *)pStmt WithArgumentsInArray:(NSArray*)arrayArgs orDictionary:(NSDictionary *)dictionaryArgs orVAList:(va_list)args; @end +// MARK: - FMResultSet Private Extension + @interface FMResultSet () { NSMutableDictionary *_columnNameToIndexMap; } +@property (nonatomic) BOOL shouldAutoClose; @end +// MARK: - FMResultSet + @implementation FMResultSet -+ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB { - ++ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB shouldAutoClose:(BOOL)shouldAutoClose { FMResultSet *rs = [[FMResultSet alloc] init]; [rs setStatement:statement]; [rs setParentDB:aDB]; + [rs setShouldAutoClose:shouldAutoClose]; NSParameterAssert(![statement inUse]); [statement setInUse:YES]; // weak reference @@ -153,15 +161,25 @@ - (NSDictionary*)resultDictionary { return nil; } +- (BOOL)next { + return [self nextWithError:nil]; +} +- (BOOL)nextWithError:(NSError * _Nullable __autoreleasing *)outErr { + int rc = [self internalStepWithError:outErr]; + return rc == SQLITE_ROW; +} +- (BOOL)step { + return [self stepWithError:nil]; +} -- (BOOL)next { - return [self nextWithError:nil]; +- (BOOL)stepWithError:(NSError * _Nullable __autoreleasing *)outErr { + int rc = [self internalStepWithError:outErr]; + return rc == SQLITE_DONE; } -- (BOOL)nextWithError:(NSError **)outErr { - +- (int)internalStepWithError:(NSError * _Nullable __autoreleasing *)outErr { int rc = sqlite3_step([_statement statement]); if (SQLITE_BUSY == rc || SQLITE_LOCKED == rc) { @@ -203,13 +221,12 @@ - (BOOL)nextWithError:(NSError **)outErr { *outErr = [_parentDB lastError]; } } - - - if (rc != SQLITE_ROW) { + + if (rc != SQLITE_ROW && _shouldAutoClose) { [self close]; } - return (rc == SQLITE_ROW); + return rc; } - (BOOL)hasAnotherRow { @@ -415,6 +432,14 @@ - (id)objectForColumn:(NSString*)columnName { return [self objectForColumnIndex:[self columnIndexForName:columnName]]; } +- (SqliteValueType)typeForColumn:(NSString*)columnName { + return sqlite3_column_type([_statement statement], [self columnIndexForName:columnName]); +} + +- (SqliteValueType)typeForColumnIndex:(int)columnIdx { + return sqlite3_column_type([_statement statement], columnIdx); +} + // returns autoreleased NSString containing the name of the column in the result set - (NSString*)columnNameForIndex:(int)columnIdx { return [NSString stringWithUTF8String: sqlite3_column_name([_statement statement], columnIdx)]; @@ -428,5 +453,19 @@ - (id)objectForKeyedSubscript:(NSString *)columnName { return [self objectForColumn:columnName]; } +// MARK: Bind + +- (BOOL)bindWithArray:(NSArray*)array orDictionary:(NSDictionary *)dictionary orVAList:(va_list)args { + [_statement reset]; + return [_parentDB bindStatement:_statement.statement WithArgumentsInArray:array orDictionary:dictionary orVAList:args]; +} + +- (BOOL)bindWithArray:(NSArray*)array { + return [self bindWithArray:array orDictionary:nil orVAList:nil]; +} + +- (BOOL)bindWithDictionary:(NSDictionary *)dictionary { + return [self bindWithArray:nil orDictionary:dictionary orVAList:nil]; +} @end diff --git a/Pods/Headers/Private/AFNetworking/AFAutoPurgingImageCache.h b/Pods/Headers/Private/AFNetworking/AFAutoPurgingImageCache.h deleted file mode 120000 index f9dc7db1..00000000 --- a/Pods/Headers/Private/AFNetworking/AFAutoPurgingImageCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFCompatibilityMacros.h b/Pods/Headers/Private/AFNetworking/AFCompatibilityMacros.h deleted file mode 120000 index 487b3fee..00000000 --- a/Pods/Headers/Private/AFNetworking/AFCompatibilityMacros.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFCompatibilityMacros.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h b/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h deleted file mode 120000 index 56feb9fb..00000000 --- a/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFImageDownloader.h b/Pods/Headers/Private/AFNetworking/AFImageDownloader.h deleted file mode 120000 index ce47c927..00000000 --- a/Pods/Headers/Private/AFNetworking/AFImageDownloader.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFImageDownloader.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h b/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 120000 index 67519d98..00000000 --- a/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h b/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h deleted file mode 120000 index 68fc7744..00000000 --- a/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFNetworking.h b/Pods/Headers/Private/AFNetworking/AFNetworking.h deleted file mode 120000 index a5a38da7..00000000 --- a/Pods/Headers/Private/AFNetworking/AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h b/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h deleted file mode 120000 index fd1322db..00000000 --- a/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h b/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h deleted file mode 120000 index ca8209b8..00000000 --- a/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h b/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h deleted file mode 120000 index e36a765d..00000000 --- a/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h b/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h deleted file mode 120000 index 835101de..00000000 --- a/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h deleted file mode 120000 index c534ebfb..00000000 --- a/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h deleted file mode 120000 index 8f2e2219..00000000 --- a/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIImage+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIImage+AFNetworking.h deleted file mode 120000 index 74f66499..00000000 --- a/Pods/Headers/Private/AFNetworking/UIImage+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h deleted file mode 120000 index a95d6738..00000000 --- a/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h deleted file mode 120000 index 95017cce..00000000 --- a/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h deleted file mode 120000 index 730b167d..00000000 --- a/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h deleted file mode 120000 index 8efd8262..00000000 --- a/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h b/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h deleted file mode 120000 index c8df6ef1..00000000 --- a/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Private/FMDB/FMDB.h b/Pods/Headers/Private/FMDB/FMDB.h deleted file mode 120000 index bcd6e0a1..00000000 --- a/Pods/Headers/Private/FMDB/FMDB.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDB.h \ No newline at end of file diff --git a/Pods/Headers/Private/FMDB/FMDatabase.h b/Pods/Headers/Private/FMDB/FMDatabase.h deleted file mode 120000 index e69b333e..00000000 --- a/Pods/Headers/Private/FMDB/FMDatabase.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabase.h \ No newline at end of file diff --git a/Pods/Headers/Private/FMDB/FMDatabaseAdditions.h b/Pods/Headers/Private/FMDB/FMDatabaseAdditions.h deleted file mode 120000 index b48a6a35..00000000 --- a/Pods/Headers/Private/FMDB/FMDatabaseAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabaseAdditions.h \ No newline at end of file diff --git a/Pods/Headers/Private/FMDB/FMDatabasePool.h b/Pods/Headers/Private/FMDB/FMDatabasePool.h deleted file mode 120000 index 1d78001f..00000000 --- a/Pods/Headers/Private/FMDB/FMDatabasePool.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabasePool.h \ No newline at end of file diff --git a/Pods/Headers/Private/FMDB/FMDatabaseQueue.h b/Pods/Headers/Private/FMDB/FMDatabaseQueue.h deleted file mode 120000 index 9adde873..00000000 --- a/Pods/Headers/Private/FMDB/FMDatabaseQueue.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabaseQueue.h \ No newline at end of file diff --git a/Pods/Headers/Private/FMDB/FMResultSet.h b/Pods/Headers/Private/FMDB/FMResultSet.h deleted file mode 120000 index fd761d84..00000000 --- a/Pods/Headers/Private/FMDB/FMResultSet.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMResultSet.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFAutoPurgingImageCache.h b/Pods/Headers/Public/AFNetworking/AFAutoPurgingImageCache.h deleted file mode 120000 index f9dc7db1..00000000 --- a/Pods/Headers/Public/AFNetworking/AFAutoPurgingImageCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFAutoPurgingImageCache.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFCompatibilityMacros.h b/Pods/Headers/Public/AFNetworking/AFCompatibilityMacros.h deleted file mode 120000 index 487b3fee..00000000 --- a/Pods/Headers/Public/AFNetworking/AFCompatibilityMacros.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFCompatibilityMacros.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h b/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h deleted file mode 120000 index 56feb9fb..00000000 --- a/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFImageDownloader.h b/Pods/Headers/Public/AFNetworking/AFImageDownloader.h deleted file mode 120000 index ce47c927..00000000 --- a/Pods/Headers/Public/AFNetworking/AFImageDownloader.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFImageDownloader.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h b/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 120000 index 67519d98..00000000 --- a/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h b/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h deleted file mode 120000 index 68fc7744..00000000 --- a/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFNetworking.h b/Pods/Headers/Public/AFNetworking/AFNetworking.h deleted file mode 120000 index a5a38da7..00000000 --- a/Pods/Headers/Public/AFNetworking/AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h b/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h deleted file mode 120000 index fd1322db..00000000 --- a/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h b/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h deleted file mode 120000 index ca8209b8..00000000 --- a/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h b/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h deleted file mode 120000 index e36a765d..00000000 --- a/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h b/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h deleted file mode 120000 index 835101de..00000000 --- a/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h deleted file mode 120000 index c534ebfb..00000000 --- a/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h deleted file mode 120000 index 8f2e2219..00000000 --- a/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIImage+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIImage+AFNetworking.h deleted file mode 120000 index 74f66499..00000000 --- a/Pods/Headers/Public/AFNetworking/UIImage+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIImage+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h deleted file mode 120000 index a95d6738..00000000 --- a/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h deleted file mode 120000 index 95017cce..00000000 --- a/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h deleted file mode 120000 index 730b167d..00000000 --- a/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h deleted file mode 120000 index 8efd8262..00000000 --- a/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h deleted file mode 120000 index c8df6ef1..00000000 --- a/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/FMDB/FMDB.h b/Pods/Headers/Public/FMDB/FMDB.h deleted file mode 120000 index bcd6e0a1..00000000 --- a/Pods/Headers/Public/FMDB/FMDB.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDB.h \ No newline at end of file diff --git a/Pods/Headers/Public/FMDB/FMDatabase.h b/Pods/Headers/Public/FMDB/FMDatabase.h deleted file mode 120000 index e69b333e..00000000 --- a/Pods/Headers/Public/FMDB/FMDatabase.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabase.h \ No newline at end of file diff --git a/Pods/Headers/Public/FMDB/FMDatabaseAdditions.h b/Pods/Headers/Public/FMDB/FMDatabaseAdditions.h deleted file mode 120000 index b48a6a35..00000000 --- a/Pods/Headers/Public/FMDB/FMDatabaseAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabaseAdditions.h \ No newline at end of file diff --git a/Pods/Headers/Public/FMDB/FMDatabasePool.h b/Pods/Headers/Public/FMDB/FMDatabasePool.h deleted file mode 120000 index 1d78001f..00000000 --- a/Pods/Headers/Public/FMDB/FMDatabasePool.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabasePool.h \ No newline at end of file diff --git a/Pods/Headers/Public/FMDB/FMDatabaseQueue.h b/Pods/Headers/Public/FMDB/FMDatabaseQueue.h deleted file mode 120000 index 9adde873..00000000 --- a/Pods/Headers/Public/FMDB/FMDatabaseQueue.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMDatabaseQueue.h \ No newline at end of file diff --git a/Pods/Headers/Public/FMDB/FMResultSet.h b/Pods/Headers/Public/FMDB/FMResultSet.h deleted file mode 120000 index fd761d84..00000000 --- a/Pods/Headers/Public/FMDB/FMResultSet.h +++ /dev/null @@ -1 +0,0 @@ -../../../FMDB/src/fmdb/FMResultSet.h \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 59846d2b..c3457bf7 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,37 +1,63 @@ PODS: - - AFNetworking (3.2.1): - - AFNetworking/NSURLSession (= 3.2.1) - - AFNetworking/Reachability (= 3.2.1) - - AFNetworking/Security (= 3.2.1) - - AFNetworking/Serialization (= 3.2.1) - - AFNetworking/UIKit (= 3.2.1) - - AFNetworking/NSURLSession (3.2.1): + - AFNetworking (4.0.2): + - AFNetworking/NSURLSession (= 4.0.2) + - AFNetworking/Reachability (= 4.0.2) + - AFNetworking/Security (= 4.0.2) + - AFNetworking/Serialization (= 4.0.2) + - AFNetworking/UIKit (= 4.0.2) + - AFNetworking/NSURLSession (4.0.2): - AFNetworking/Reachability - AFNetworking/Security - AFNetworking/Serialization - - AFNetworking/Reachability (3.2.1) - - AFNetworking/Security (3.2.1) - - AFNetworking/Serialization (3.2.1) - - AFNetworking/UIKit (3.2.1): + - AFNetworking/Reachability (4.0.2) + - AFNetworking/Security (4.0.2) + - AFNetworking/Serialization (4.0.2) + - AFNetworking/UIKit (4.0.2): - AFNetworking/NSURLSession - - FMDB (2.7.5): - - FMDB/standard (= 2.7.5) - - FMDB/standard (2.7.5) + - FMDB (2.7.11): + - FMDB/standard (= 2.7.11) + - FMDB/standard (2.7.11) + - MapxusBaseSDK (6.8.0): + - AFNetworking/NSURLSession (~> 4.0.2) + - AFNetworking/Reachability (~> 4.0.2) + - AFNetworking/Security (~> 4.0.2) + - AFNetworking/Serialization (~> 4.0.2) + - YYModel (~> 1.0.5) + - MapxusComponentKit (6.8.0): + - MapxusMapSDK (= 6.8.0) + - MapxusMapSDK (6.8.0): + - MapxusBaseSDK (= 6.8.0) + - MapxusRenderSDK (= 5.13.0) + - MapxusRenderSDK (5.13.0) + - YYModel (1.0.5) DEPENDENCIES: - AFNetworking - FMDB - FMDB (~> 2.0) + - MapxusComponentKit (= 6.8.0) + - MapxusMapSDK (= 6.8.0) SPEC REPOS: - trunk: - - AFNetworking + https://github.com/CocoaPods/Specs.git: - FMDB + https://github.com/Mapxus/mapxusSpecs.git: + - AFNetworking + - MapxusBaseSDK + - MapxusComponentKit + - MapxusMapSDK + - MapxusRenderSDK + - YYModel SPEC CHECKSUMS: - AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 - FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + AFNetworking: 24bbe15bca5f5c108a34a2608c8efd9d548ee884 + FMDB: 57486c1117fd8e0e6b947b2f54c3f42bf8e57a4e + MapxusBaseSDK: d1ac2e7165ff2600ec81fb3af9abd4d9e607dba5 + MapxusComponentKit: 646e65155abb23e03e873915adc77492cd4996ce + MapxusMapSDK: 622660fb9a76879152e2166df874a0c3b81cb044 + MapxusRenderSDK: 9afa40a07888b84ffe8ccb03b53958fb9e670def + YYModel: 035c452ebe1aca91282aa570739c55f3d5e1b16e -PODFILE CHECKSUM: ab4957274e713562b891c02d11a1a0f6dac26a22 +PODFILE CHECKSUM: 1d84f9877c3c87b85572a8446fe9182b85fa6a58 -COCOAPODS: 1.8.4 +COCOAPODS: 1.15.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index d330040d..846690e8 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -6,513 +6,998 @@ objectVersion = 48; objects = { +/* Begin PBXAggregateTarget section */ + 8E9F94E0793AD6C8262586CC8BFC15BE /* MapxusComponentKit */ = { + isa = PBXAggregateTarget; + buildConfigurationList = A258B53318D941535C52584E686693AA /* Build configuration list for PBXAggregateTarget "MapxusComponentKit" */; + buildPhases = ( + 05618E884369D6651F97D3BA10CB8DB0 /* [CP] Copy XCFrameworks */, + ); + dependencies = ( + 48878AC3FD47595D8DFF792E789BD487 /* PBXTargetDependency */, + ); + name = MapxusComponentKit; + }; + C954AAEBD3F02B1F1065A3AA8B37BC34 /* MapxusMapSDK */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 1EC02087B776DCE900A4A62B2422AC4B /* Build configuration list for PBXAggregateTarget "MapxusMapSDK" */; + buildPhases = ( + 8703030D68276EE06420B357162CED05 /* [CP] Copy XCFrameworks */, + ); + dependencies = ( + 8AC0B4E7801955B37D38694DBD10C4E7 /* PBXTargetDependency */, + 0BB01E422AEC359F522A3CEC332E4856 /* PBXTargetDependency */, + ); + name = MapxusMapSDK; + }; + CEF4E35A9C0C98F4E940580A09766225 /* MapxusBaseSDK */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 261C62D5DE7710582FED75751C9E0584 /* Build configuration list for PBXAggregateTarget "MapxusBaseSDK" */; + buildPhases = ( + 416E578D8301EEAE18E8F1F1810F5F46 /* [CP] Copy XCFrameworks */, + ); + dependencies = ( + E9F97F6FE6D966593D3D254872233DC1 /* PBXTargetDependency */, + C365330639C74D332FBAECAB8436A0E4 /* PBXTargetDependency */, + ); + name = MapxusBaseSDK; + }; + EC4B497CC021D47B5E1CDB9C0B0086D7 /* MapxusRenderSDK */ = { + isa = PBXAggregateTarget; + buildConfigurationList = CB0C0932CD7987385725516FE1096C63 /* Build configuration list for PBXAggregateTarget "MapxusRenderSDK" */; + buildPhases = ( + F6304C6F9481B878E18C760CF98C339B /* [CP] Copy XCFrameworks */, + ); + dependencies = ( + ); + name = MapxusRenderSDK; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ - 0343B86E9B9F5619970FCBD7370E033A /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FD0CC7F8649F75D9C57CF075469C3D0 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05AB469F0F79C648F8E637F88CDB9E97 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F3CABB2FB798D0B2EB13A02F105BAA20 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C26E8CE5202114A92A9CFFBA1A9CE88 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3960090AC37916265DEFC1F2C10CA1E7 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E0171B9B36FCD1CAF55F60E617C7AD8 /* FMDatabaseQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCF2E9C4C9853509C03A3394D002B20 /* FMDatabaseQueue.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0E5E810A0B7DE1DE6C762A83F205627A /* FMDatabasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B0950914F7D98423500165D65014C9 /* FMDatabasePool.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 10EB9A7552672DC328F8695A98E605B3 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 083CEC88770D0FFAF9C22DE74CC33F7E /* AFImageDownloader.m */; }; - 1102564C9CDAC18DF8D6DB20F6523E72 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 163E0D3F6CB290170ADB583DDE1DB8F3 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1EA1235398DAC98440B2EFBE43839FD1 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 50BE92E0EC85F85E8C3103338BB2D0E4 /* AFSecurityPolicy.m */; }; - 1F66F73B61BEA115076A9CF7DD463832 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D3192C110FBA446A495E7CE9AFC93E /* AFNetworkActivityIndicatorManager.m */; }; - 2C95C61175E1EB929A4B094581747835 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 522611C278669BFBAAE612A35E35ED67 /* AFURLResponseSerialization.m */; }; - 304FB2F3CB19F5C44D812D90AA2F1121 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 4242A197A95C21DCD6A86DB835554C14 /* UIRefreshControl+AFNetworking.m */; }; - 337C8A9592224E2629F71F4759AE0DF2 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 68A85DBCFCE55E75913E833D933B16A6 /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3801A443834985F278FE479B54319B4F /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B85312E2D584B223B5BC8B3E17E0DD /* AFNetworkReachabilityManager.m */; }; - 398FC0E13848217BC98F9215DAE5C663 /* FMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B638483C9B0170A802AF7504B51F1F3 /* FMDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 40F9C3B7C0CCD0982FD14728F2595632 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C2E23C8D1D832FD6B4CD03BD17BA801 /* UIImageView+AFNetworking.m */; }; - 418985D1EA0253EAA3C02FC1F31CA5E8 /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6404DA3E2915464649E92586432F65BB /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 551EDABAFCE6F89BB75C7174D4D9D059 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = C5CE668A34BD02E96312ED4410758688 /* UIActivityIndicatorView+AFNetworking.m */; }; - 5607AF83703C0AEDB12115740B6672BD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E2C451426A60B7703763C2C789DF290 /* AFAutoPurgingImageCache.m */; }; - 5671A72ECAB90A855ECF6F69B750B4E1 /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = B0DE52D038A4BFFA029F0F7E3EB24551 /* UIWebView+AFNetworking.m */; }; - 5FF1B4EEDEE8BCA2E676E2548A412B02 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 39CE300F759B29E1E87BBB9FD8C95829 /* AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67A2F831427507A2F31BFB501C3A5226 /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CBF69676A2D2D2572AA0F2CC673AC38 /* FMDatabaseAdditions.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6B5B030904BA451F4FFE3AF2FD28D2DA /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 20631F59E6F0881E2F76C95C5C754872 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 72797BC85469FCE7E6198B67EC88E851 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = B4C3DC82540D1213F1398BF75DBB993E /* AFURLRequestSerialization.m */; }; - 8231FDD98A7D1659F4FA5788AFEEE6DF /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 21DE2D05C4FBE7D9F1827B29BB6AB296 /* AFHTTPSessionManager.m */; }; - 861524F850CD59D6534F97F2B5C40AB4 /* FMDatabaseQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 93AA2C6618A0188D6F12B47990DB6841 /* FMDatabaseQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 894126828AF68F98598CA7B53E737AEF /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 77EF8125A1A7884570122B84E3ABE0D6 /* UIProgressView+AFNetworking.m */; }; - 9864150CB1C5EED626F805CDD6EDC17A /* FMDatabasePool.m in Sources */ = {isa = PBXBuildFile; fileRef = DDE9D4874D4D70029D6EA5AA8161250E /* FMDatabasePool.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 98DBC9027ECC60B163947E6399D0F6B7 /* FMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 52B2A92CFF183013D2A189C88432D04F /* FMDatabaseAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9A7A3B80A68DB4A21A6833AA4683A7AD /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9ABC67F03B216F842BC806C9DFAA80 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A16187923EA1A156F18C909206809C30 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3DB308F57B0392F1D4B87EE0512F95 /* UIButton+AFNetworking.m */; }; - A845819E8332E3CA279E6B00EAA55366 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A49D9F32C8246B8ABBD00FEFAB05712 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B00EA522A62498626388BC649DFE2996 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = DE617E6E58F0D1583BA3E3D12C5C5286 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B098BC9005738774F6288FF2879FD51D /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D1A80ED1D6A98F5E39FB402C79D8825C /* AFNetworking-dummy.m */; }; - B27878E3B8F8ADB1FE01DBD6CB5812E7 /* UIImage+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FD6EDDDA065216F258C0266C36F977EE /* UIImage+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE8A414116BF1163BB0904699251C75C /* Pods-LLDebugToolDemoTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B4382DA8DE1621D813C9FD2617E6FD7E /* Pods-LLDebugToolDemoTests-dummy.m */; }; - C06F61A759022A62864BD9F8EE3660F3 /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A5408E95192F3FA3572E201A5D1B919 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1EE07F0E0B54668574633B545FBCE48 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F99B3E80617C8281F952E7E57EA75F0 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C726ED0988A1C186BB9B6E60A6C47168 /* Pods-LLDebugToolDemoUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C31EE336671A97A97EF151F3E171C8AD /* Pods-LLDebugToolDemoUITests-dummy.m */; }; - CBEAEBE624B50122E0EC213F3E9075C8 /* FMDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 909A2A422ABD5DB9E2411B5B42253E90 /* FMDB.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D280A3B13923FF5FA778EF312BD965F7 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A882275C4FE369DE843C620605A2EE90 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3DC240631E1FA883A5604B3E99BAE2B /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C136A572630EBE6B7B549E0D3D0E598 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D569D00367B456F6CDFE2700097562FC /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 29CC854AC54311B56339F6AB99CDBE98 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D589398964FBAAF5E2C0B85495FE4892 /* FMDB-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D3ECB7039FB43540947EE6A9042DAD1 /* FMDB-dummy.m */; }; - E7351E56F4C49CE1F9559D5C69ECC1ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 891F8082ACA7CF965846B1A41B4BC4A1 /* AFURLSessionManager.m */; }; - EB1502887E70C750681F9924BA8C83CC /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 469697AF248A76A9EFEFA643276133C3 /* FMDatabase.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EED31E671953DD497F06459263FE8083 /* FMResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = AB97776E6BB63F826DAE734FCEE4549E /* FMResultSet.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F77DFE3E0785BE57E733B362BF887F8D /* Pods-LLDebugToolDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2356270002B6DD8FDF709D52864D3E3C /* Pods-LLDebugToolDemo-dummy.m */; }; - F7D264D3701AAF2368F1745E3F1BA13F /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 678FBCD57CEB19F24299920286D380DC /* FMResultSet.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0 -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F9AD2CFBEDD600706B921428D25DFA3A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D971A56F2C092213C980B38AFC34E2 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FEAA3C60F4BDDAC22BD1A6B047DBAAE9 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E79CF9CB66EA8701F0513DF33D3AA613 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0216CF9755BC85EB03EBFEC39CF5D8F8 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E7C3BDC7B634125F16FF8CD58A653C8 /* UIActivityIndicatorView+AFNetworking.m */; }; + 051279691507032A00CCDF7D3AC50912 /* Pods-LLDebugToolDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B5B2BA5A523C6767514A7E55E02A4B2 /* Pods-LLDebugToolDemo-dummy.m */; }; + 06EFAA27700B6FFDF6146555EB2F6A98 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 557B9D948F8AF7FF6DB8B7A1910D7F74 /* AFURLResponseSerialization.m */; }; + 0B8D47C43A777540CF41FFAF6FA11B55 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E938BE973ED6465465744037985FA61A /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 12A7A60AEFD471DF5A7D4141C680EE74 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 073267F2766339A6194C83013A6C7915 /* UIRefreshControl+AFNetworking.m */; }; + 15E78DCD7D67E3072E64B49479F6F4CB /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 16DDABA778C802E7944F8788B113FCB4 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 16AD1C7A8DD870BA28CD0072B9DB9A6E /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6661F1BFD570BD7056DEE8AD64D5C665 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 16CB8696E55C8FAACFEAFB58642846DB /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E6171886F7928B7B835358C43147F9 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 199AF8DDA33958AADC4803758DBFFA95 /* FMDB.h in Headers */ = {isa = PBXBuildFile; fileRef = CFF682AA90C07E6ECA7541BEA4795827 /* FMDB.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1AE7E0867E1471C36D931DE878A0D822 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D9C7E50D068F851ADF1323DDE3836C62 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FBF760C322524836E1CA916147E48F3 /* FMResultSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 76DEC71CE0799D5E7CD7FE7F6B87B807 /* FMResultSet.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2503A07349B0BC851418F40EDD3BEE96 /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DA68880BB7144A292D6A552001A750F /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 28ACDCDA3829860FFA3AF9AA4D3D4A26 /* YYClassInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9099407859FF97AAF39E65654FED48BB /* YYClassInfo.m */; }; + 2D46E3F6F4CBF59E151B286A3AC2D61A /* FMDB-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E1E247B47D238DF1A3CD4023740ABED /* FMDB-dummy.m */; }; + 30DCE7D7C6C2777241BB82241C110EC0 /* FMResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = AE1E84C81CC884ED13EBE0B7F4FD8504 /* FMResultSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32A4365623A37E5A820F8D40B327E0DA /* NSObject+YYModel.h in Headers */ = {isa = PBXBuildFile; fileRef = C5F730E8C95DA5DB8401553EA71AA1BD /* NSObject+YYModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36636B63F61E0ED99D2F9291524B954C /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 112781273FAEE5FC1BC7813C3FE9D356 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36E0C489A6D268945D2C5D920C90186E /* FMDatabaseAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B2892CB4C5247D8B5A32784CD64129EE /* FMDatabaseAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3A59A254FD4A71E2E99D556C11FBF077 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = D42C70FB75B841A6F6CE2D67125D7F97 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C449893C865F4B23F9B9C766643D3D5 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D3C1A3030CEEA2DE715E9DA1F61DCE3 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3DAFEB56D44F40213CF0732F6BEE196C /* FMDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E384D6F4E9D3819CEC87F7249EB5E1 /* FMDatabase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 461C3FD27FE9181BE25DDC344DF1B511 /* YYModel.h in Headers */ = {isa = PBXBuildFile; fileRef = F6D26A56AB4B2EFE2355E47074889E8E /* YYModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 462D2CF16A48CB5825F45ECB334F4317 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CD5A7B67BD94B5D5D89113BA7D70546 /* UIImageView+AFNetworking.m */; }; + 469B64AC04180DCE907783315EC29344 /* FMDB-FMDB in Resources */ = {isa = PBXBuildFile; fileRef = A56B4BBA108B020CE270D08D4A6B3169 /* FMDB-FMDB */; }; + 46BCEC4FC345336524E15FAD43D816C2 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A0969C9EF62C1F481D98AAB22619392 /* AFURLSessionManager.m */; }; + 4810ADDE839004D23FFDD5862C3CAC97 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A17CE596511D6158C053679DE3AEAB0 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4BE3A4C8583BD309B43D9BC16EB39A85 /* AFNetworking-AFNetworking in Resources */ = {isa = PBXBuildFile; fileRef = 47EC2A91CCF85694CE4066E4C34CE690 /* AFNetworking-AFNetworking */; }; + 4CF88A6FFB95FB3D645B5B30667D9A65 /* FMDatabaseQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 492A40202CA6F69A71DE7C4B600EDF05 /* FMDatabaseQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4F01408D4F97D16B6E94160E31F80972 /* YYModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CA631E56F72216BDE539B0A523BC795E /* YYModel-dummy.m */; }; + 514067D55F326D8AC31E6E1164865B23 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BB2DA817AA406AA22E08B5EB9808A20D /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 545F9D1137600CD4806CEC4D918246D3 /* FMDatabasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 21301E9BA5682BF9960268B9D8B3026A /* FMDatabasePool.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B7D7918EBB86DAC25AE56C10684C672 /* Pods-LLDebugToolDemoUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C2BBCCB59F7D7258DC18036691614A7 /* Pods-LLDebugToolDemoUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E4174EAEFCAADDFC9522D7D0E580CA8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */; }; + 6A9EEC3BCFEF85314E29FBB73241BA7F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 8FD442BE77300A261A000CD2DD3948C3 /* PrivacyInfo.xcprivacy */; }; + 71A941F43DEFA69B8C954BC1669A131C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */; }; + 7531AB87418B2ADFB66E4CC795111250 /* YYModel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A996AA5CCBA25368D354DCD62E23155 /* YYModel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7627CAE9E24F809738175E70446AC678 /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CA6A3231EEA20B39C1AD4B29DCAC508D /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79EC9393BC5F3CFF2E57FC211A812A81 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A926A3CCCA0775B1D1DD3D0F3E39A1B6 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B0DE49CC7A9CAB1933DC1424D0EFAAA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */; }; + 7FE700060FE1EFC64FFAACC4B875D03F /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = AADB6928ECFD8B87168394F7B981A1CC /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83214D12690BB7FBBFF2FD7AAA3D937A /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 732546010F8694055BCFD5C11CEA5CC3 /* WKWebView+AFNetworking.m */; }; + 8F7C686945C3C2F81CE45E6EBB5E9651 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F06845A5D319643CD148EECCD3D01B3 /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 935B9309F409A7FEE1A05F6FD6A363A2 /* YYModel-YYModel in Resources */ = {isa = PBXBuildFile; fileRef = 9290F5D930C002F0CE3CC1D27D98318E /* YYModel-YYModel */; }; + 93D90786EF355809CCE4C1807F88E253 /* FMDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9A00F759FAD60FF4DDDD06A7A46D04 /* FMDatabase.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9A4F81DFF90532E56EDA868C0EE1FEDA /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 485D3C6E7C85EF4216D8512B460D9BB9 /* AFHTTPSessionManager.m */; }; + 9CF98B17C931E3E890C819D73D17C986 /* FMDatabasePool.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E083797C4F5DC24BBD634B9D0FB35C /* FMDatabasePool.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9EADA6BA11791275E333413D89CE91D1 /* NSObject+YYModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F16884E83BA349664651EDD467248CD /* NSObject+YYModel.m */; }; + A5E9F06D5A0C117F1A9FD8F97D6DE21B /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6127CF712BD7FAF0818FE8605664F39C /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A630AB9706794946221552303D187264 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 31C1FA4C3B633E464772518E8E6C07D3 /* AFImageDownloader.m */; }; + A6775F73FB56C041E4D023FBCDAC65A7 /* Pods-LLDebugToolDemoTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 45002A1DF5066DEBACFD1CDC8A3BF480 /* Pods-LLDebugToolDemoTests-dummy.m */; }; + A9C9682A7EE6916677DBD2885BA04F5E /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7F6B77ED576E515D072C3A77F549C3 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AADA72A94BBD6A1854203E3E6A5E6575 /* FMDatabaseAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C0031CDB7D613C79046781415313C05A /* FMDatabaseAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AD134A2ACA27D6250950C1E21B064C27 /* FMDB-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 411EB79AC2DFCB25E934693675658A19 /* FMDB-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B09C5828976A79D6FD85E522C9A4C4CB /* Pods-LLDebugToolDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C50CFB41BAE7B85CCC68403AF504A20 /* Pods-LLDebugToolDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1BB3EEDB03AE8A63C0B465AD3C31D58 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */; }; + C36985925B84D4323036C4568A6DC336 /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B76C50475A0F45CB57981283AE931AC /* AFAutoPurgingImageCache.m */; }; + C487018B886BB232DB2A3703C7C6C5EC /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 73072789ED34DF4CDD7033002C97B6D7 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9ECC68BD389848E00DD75FE3B8ED0C7 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 9B3E40F7F0ADA8F1F09948E116E6186B /* PrivacyInfo.xcprivacy */; }; + CC7E02D68EAE86C6AAC787A14A6FD1A6 /* FMDatabaseQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B21488BCB7A4439670CCBDD7BEF2E26 /* FMDatabaseQueue.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D1FF858BE60CBBFF1FB0C50A031B260A /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E99DEA81D1976437BD76C32F25C7820 /* AFNetworkActivityIndicatorManager.m */; }; + D26A0B4CD12EADE00D4BE6FEA741440D /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D709707424BC205C78DDEBE8CD7CDF9 /* AFNetworking-dummy.m */; }; + D3E8A27DD3421590DD91E2C3E58907D9 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD4BCAF4E3EF18260DDE575E485BD8F /* UIProgressView+AFNetworking.m */; }; + D6774E4D53A682A26A4FF9D0037BCE82 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DC2A17B4E2D29986D8385C58338F1DF /* CoreFoundation.framework */; }; + DC91C8ECCB129B7638B778BFE48423AF /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BBD8A71A22F52519A5D6632D7C55813B /* UIButton+AFNetworking.m */; }; + DDCF9D8CDDEED7BF12F9FD8FB6FC33D4 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 66BAEE2771F00C24C4254EDC4E3E219B /* PrivacyInfo.xcprivacy */; }; + E29652B48D6116BA1303CD7F59AB33EF /* Pods-LLDebugToolDemoUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E3E689C78080E9B46194ABD45925AE4 /* Pods-LLDebugToolDemoUITests-dummy.m */; }; + E2A6D01F53ED0631019E4BDD93008500 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C006C588E3BA42FDCF480774C4F895EC /* AFSecurityPolicy.m */; }; + E523841EC9E603B876656D45E1D5706A /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BAFC66819877F0B713B02019B402093 /* AFNetworkReachabilityManager.m */; }; + E88089864E230F53FB43EA40466E4483 /* Pods-LLDebugToolDemoTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D6F1DE71AD380B976609007FBED8E5 /* Pods-LLDebugToolDemoTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA9A33DFF2188E0D3B60333D0797B8DD /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA8DE20A8BCE7F2BD76500A7894EB78 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3370945AB8B0C4EC1B60E83DDE0EBD3 /* YYClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A78DE830CEF6BE77A9CF23A8AC7E84 /* YYClassInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F5824F799D325F8428194607290B286D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */; }; + FACD96F13FF22341ADB18C18F15A4263 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EBF0BD0A6C5AF82B086FAEAC5322896 /* AFURLRequestSerialization.m */; }; + FF23B21305F917EA0B9D46403B687A03 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0BB981463A739123DB65F7C2C0D49D91 /* PBXContainerItemProxy */ = { + 06136C269FAF3410144AC8AF4F6EF463 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D04677D31BCA9D5D337FA3CFAEEC2D02; + remoteInfo = "Pods-LLDebugToolDemo"; + }; + 10D3AEB1709177B430F2785ADBBB5235 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; + remoteInfo = YYModel; + }; + 20F099FAC856ED40439D642EF811F18A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8592E0E389D40AC17881400ADC67ABC0; remoteInfo = FMDB; }; - 3D0844B4B94BB45D5CC3F84C4BC21F1B /* PBXContainerItemProxy */ = { + 29F78C419D83AD592ADCD2ACF7BF9C55 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; + remoteGlobalIDString = 8592E0E389D40AC17881400ADC67ABC0; + remoteInfo = FMDB; }; - 4F97D71D77760F4EC6F7213388073426 /* PBXContainerItemProxy */ = { + 37DD41B53C8CD7FD0E0E483252AC91A7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D04677D31BCA9D5D337FA3CFAEEC2D02; - remoteInfo = "Pods-LLDebugToolDemo"; + remoteGlobalIDString = 64099C83F5A7EE32C2ED24364CAF33A3; + remoteInfo = "AFNetworking-AFNetworking"; }; - 885097AE2CCCF67E260C7C4D1D6EBE86 /* PBXContainerItemProxy */ = { + 38C42BB5A71652B1E342C9C8CADD311A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8592E0E389D40AC17881400ADC67ABC0; remoteInfo = FMDB; }; - A80FD6C00377B0CA87AA6F67721ED432 /* PBXContainerItemProxy */ = { + 3D95B609D80F0FA4AA75DD19C77E2B71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8E9F94E0793AD6C8262586CC8BFC15BE; + remoteInfo = MapxusComponentKit; + }; + 420A0B10C0FE7C7048539D67442EF6E8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C954AAEBD3F02B1F1065A3AA8B37BC34; + remoteInfo = MapxusMapSDK; + }; + 519CEFFF0DCB5F2F2958078044C46D66 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84B44807A12996D487A4A591A481D6A0; + remoteInfo = YYModel; + }; + 5DAE3409A2C30EB9F75CD90C81B065BE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D04677D31BCA9D5D337FA3CFAEEC2D02; remoteInfo = "Pods-LLDebugToolDemo"; }; - BAF959003BC2D6AAA18F4D9DBFF58254 /* PBXContainerItemProxy */ = { + 5E6A36DE6DBE878EE31F3C792DA285AD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A4E70AD0D1BF7835267AA2C20BAADFA4; + remoteInfo = "YYModel-YYModel"; + }; + 7B33B36BCF02144A167BC3A046609D62 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CEF4E35A9C0C98F4E940580A09766225; + remoteInfo = MapxusBaseSDK; + }; + 86EB9E6C937225509F993E972AAA3B43 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC4B497CC021D47B5E1CDB9C0B0086D7; + remoteInfo = MapxusRenderSDK; + }; + A017D231B5C35C1AA273DBB5F902FE3C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CEF4E35A9C0C98F4E940580A09766225; + remoteInfo = MapxusBaseSDK; + }; + A0942F31F810AEDB75DF57F75E6B9D6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; remoteInfo = AFNetworking; }; - C2C86B1A77234E5A1D0ED4DFA9655FBF /* PBXContainerItemProxy */ = { + B2F91F822DDC1816F7CF169CABB92B33 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8592E0E389D40AC17881400ADC67ABC0; - remoteInfo = FMDB; + remoteGlobalIDString = C954AAEBD3F02B1F1065A3AA8B37BC34; + remoteInfo = MapxusMapSDK; + }; + BDAE1C14A486505EC10CC460E845AA71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + C6FEA28A467606C6A9D10F6D45561B87 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + D9FEA51CDBA2EE9B2D8E7BF321CB7091 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC4B497CC021D47B5E1CDB9C0B0086D7; + remoteInfo = MapxusRenderSDK; }; - FC7FA8996B0BE5D52C650B00240BF031 /* PBXContainerItemProxy */ = { + DAAAD26BB24FFE4343415CABD56FF9EF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; remoteInfo = AFNetworking; }; + FE1D3D648FBC9AA83FDE92AC86095F06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F93E527462DAA7DF7BE13389C4F468F4; + remoteInfo = "FMDB-FMDB"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 083CEC88770D0FFAF9C22DE74CC33F7E /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - 0C00F6591C60C296CBE8BE9CD09ED4E5 /* libPods-LLDebugToolDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-LLDebugToolDemo.a"; path = "libPods-LLDebugToolDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D3ECB7039FB43540947EE6A9042DAD1 /* FMDB-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FMDB-dummy.m"; sourceTree = ""; }; - 0F9ABC67F03B216F842BC806C9DFAA80 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - 15E67019C63A435ADAB47CD3E9B1A5C5 /* Pods-LLDebugToolDemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoTests.debug.xcconfig"; sourceTree = ""; }; - 163E0D3F6CB290170ADB583DDE1DB8F3 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - 1B638483C9B0170A802AF7504B51F1F3 /* FMDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabase.h; path = src/fmdb/FMDatabase.h; sourceTree = ""; }; - 1C2E23C8D1D832FD6B4CD03BD17BA801 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 1D3DB308F57B0392F1D4B87EE0512F95 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 1E2C451426A60B7703763C2C789DF290 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 20631F59E6F0881E2F76C95C5C754872 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - 21DE2D05C4FBE7D9F1827B29BB6AB296 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 2356270002B6DD8FDF709D52864D3E3C /* Pods-LLDebugToolDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LLDebugToolDemo-dummy.m"; sourceTree = ""; }; - 29CC854AC54311B56339F6AB99CDBE98 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - 2F607EDF7B65012C80C62261B117B44B /* libPods-LLDebugToolDemoUITests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-LLDebugToolDemoUITests.a"; path = "libPods-LLDebugToolDemoUITests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2F99B3E80617C8281F952E7E57EA75F0 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 38D3192C110FBA446A495E7CE9AFC93E /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - 3960090AC37916265DEFC1F2C10CA1E7 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - 39CE300F759B29E1E87BBB9FD8C95829 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 3F493014DB95E30909BF833484405061 /* AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.xcconfig; sourceTree = ""; }; - 3FD0CC7F8649F75D9C57CF075469C3D0 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - 4242A197A95C21DCD6A86DB835554C14 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - 469697AF248A76A9EFEFA643276133C3 /* FMDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabase.m; path = src/fmdb/FMDatabase.m; sourceTree = ""; }; - 49490A62E551053A478EA84E728FF3A2 /* Pods-LLDebugToolDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemo.debug.xcconfig"; sourceTree = ""; }; - 4ED400452FCC7EFE1840A90F6457330B /* libPods-LLDebugToolDemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-LLDebugToolDemoTests.a"; path = "libPods-LLDebugToolDemoTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 50BE92E0EC85F85E8C3103338BB2D0E4 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - 522611C278669BFBAAE612A35E35ED67 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - 52B2A92CFF183013D2A189C88432D04F /* FMDatabaseAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseAdditions.h; path = src/fmdb/FMDatabaseAdditions.h; sourceTree = ""; }; - 5DCF2E9C4C9853509C03A3394D002B20 /* FMDatabaseQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseQueue.m; path = src/fmdb/FMDatabaseQueue.m; sourceTree = ""; }; - 5FE4D503D738DD81E3C5998648CE272D /* Pods-LLDebugToolDemoUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemoUITests-acknowledgements.plist"; sourceTree = ""; }; - 61B85312E2D584B223B5BC8B3E17E0DD /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 6404DA3E2915464649E92586432F65BB /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - 645DB048BA12D63A0929A9AACCF59AF0 /* Pods-LLDebugToolDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemo.release.xcconfig"; sourceTree = ""; }; - 65B0950914F7D98423500165D65014C9 /* FMDatabasePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabasePool.h; path = src/fmdb/FMDatabasePool.h; sourceTree = ""; }; - 678FBCD57CEB19F24299920286D380DC /* FMResultSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMResultSet.m; path = src/fmdb/FMResultSet.m; sourceTree = ""; }; - 68A85DBCFCE55E75913E833D933B16A6 /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; - 6A5408E95192F3FA3572E201A5D1B919 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - 7503BE41D1D69B2D7A9667267D50EA9E /* FMDB-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FMDB-prefix.pch"; sourceTree = ""; }; - 77EF8125A1A7884570122B84E3ABE0D6 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - 891F8082ACA7CF965846B1A41B4BC4A1 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - 8A49D9F32C8246B8ABBD00FEFAB05712 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 8C136A572630EBE6B7B549E0D3D0E598 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - 8CBF69676A2D2D2572AA0F2CC673AC38 /* FMDatabaseAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseAdditions.m; path = src/fmdb/FMDatabaseAdditions.m; sourceTree = ""; }; - 909A2A422ABD5DB9E2411B5B42253E90 /* FMDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDB.h; path = src/fmdb/FMDB.h; sourceTree = ""; }; - 93AA2C6618A0188D6F12B47990DB6841 /* FMDatabaseQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseQueue.h; path = src/fmdb/FMDatabaseQueue.h; sourceTree = ""; }; - 98918A72F637E6318A2ED6E7735D4A0C /* FMDB.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FMDB.xcconfig; sourceTree = ""; }; + 073267F2766339A6194C83013A6C7915 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + 0A0969C9EF62C1F481D98AAB22619392 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + 0A948C6BDD7A45A79D40ECFCA8357AE3 /* MapxusMapSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusMapSDK.release.xcconfig; sourceTree = ""; }; + 0C00F6591C60C296CBE8BE9CD09ED4E5 /* Pods-LLDebugToolDemo */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-LLDebugToolDemo"; path = Pods_LLDebugToolDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0D709707424BC205C78DDEBE8CD7CDF9 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 0E99DEA81D1976437BD76C32F25C7820 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + 0F7DF3E6BF619A8998B52388F63B1623 /* YYModel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYModel.debug.xcconfig; sourceTree = ""; }; + 11236E3ED54FA94CF1649BD9931BCC61 /* Pods-LLDebugToolDemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoTests.debug.xcconfig"; sourceTree = ""; }; + 112781273FAEE5FC1BC7813C3FE9D356 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 1397D2D36D8843D78F9065D7EF0578A5 /* Pods-LLDebugToolDemoTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LLDebugToolDemoTests.modulemap"; sourceTree = ""; }; + 16DDABA778C802E7944F8788B113FCB4 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + 175F19FE3C898BD86FB3DC6D3C8A3118 /* YYModel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "YYModel-Info.plist"; sourceTree = ""; }; + 1B76C50475A0F45CB57981283AE931AC /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 1EBF0BD0A6C5AF82B086FAEAC5322896 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + 21301E9BA5682BF9960268B9D8B3026A /* FMDatabasePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabasePool.h; path = src/fmdb/FMDatabasePool.h; sourceTree = ""; }; + 21E01F7DA982D5B7E81516D1D447DE02 /* MapxusComponentKit-xcframeworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "MapxusComponentKit-xcframeworks.sh"; sourceTree = ""; }; + 221A24FF0AA85800376B560E8EB3322B /* MapxusMapSDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusMapSDK.debug.xcconfig; sourceTree = ""; }; + 2972C496DEA1FCDB14CAA13662E01003 /* MapxusRenderSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusRenderSDK.release.xcconfig; sourceTree = ""; }; + 2AD4BCAF4E3EF18260DDE575E485BD8F /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + 2BAFC66819877F0B713B02019B402093 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 2C2BBCCB59F7D7258DC18036691614A7 /* Pods-LLDebugToolDemoUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LLDebugToolDemoUITests-umbrella.h"; sourceTree = ""; }; + 2C65282047AC06858011AEF4A1C97C65 /* Pods-LLDebugToolDemo-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemo-Info.plist"; sourceTree = ""; }; + 2F607EDF7B65012C80C62261B117B44B /* Pods-LLDebugToolDemoUITests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-LLDebugToolDemoUITests"; path = Pods_LLDebugToolDemoUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 31C1FA4C3B633E464772518E8E6C07D3 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 341DBE990B97D11BE47EB27EFBEAE8EC /* YYModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYModel-prefix.pch"; sourceTree = ""; }; + 34E563D1591C4D6DD8D355CB610F5B44 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; + 358463D5437D7FBB42648236323D894F /* ResourceBundle-AFNetworking-AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-AFNetworking-AFNetworking-Info.plist"; sourceTree = ""; }; + 35A78DE830CEF6BE77A9CF23A8AC7E84 /* YYClassInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YYClassInfo.h; path = YYModel/YYClassInfo.h; sourceTree = ""; }; + 38DD0DA75FF3D4C24319880B730979A0 /* Mapbox.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; path = Mapbox.xcframework; sourceTree = ""; }; + 3A17CE596511D6158C053679DE3AEAB0 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + 3A996AA5CCBA25368D354DCD62E23155 /* YYModel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "YYModel-umbrella.h"; sourceTree = ""; }; + 3CD5A7B67BD94B5D5D89113BA7D70546 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 3F77C7B270B3F3334A95F296516D84D3 /* FMDB.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FMDB.release.xcconfig; sourceTree = ""; }; + 411EB79AC2DFCB25E934693675658A19 /* FMDB-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FMDB-umbrella.h"; sourceTree = ""; }; + 4328D8268FCE62AF5F5D8BE4016B0C06 /* MapxusBaseSDK-xcframeworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "MapxusBaseSDK-xcframeworks.sh"; sourceTree = ""; }; + 43E9E1D16DE1ADD74A02A0D3CAD1647A /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 45002A1DF5066DEBACFD1CDC8A3BF480 /* Pods-LLDebugToolDemoTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LLDebugToolDemoTests-dummy.m"; sourceTree = ""; }; + 47EC2A91CCF85694CE4066E4C34CE690 /* AFNetworking-AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "AFNetworking-AFNetworking"; path = AFNetworking.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 485D3C6E7C85EF4216D8512B460D9BB9 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + 492A40202CA6F69A71DE7C4B600EDF05 /* FMDatabaseQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseQueue.h; path = src/fmdb/FMDatabaseQueue.h; sourceTree = ""; }; + 4B5B2BA5A523C6767514A7E55E02A4B2 /* Pods-LLDebugToolDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LLDebugToolDemo-dummy.m"; sourceTree = ""; }; + 4C9A00F759FAD60FF4DDDD06A7A46D04 /* FMDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabase.m; path = src/fmdb/FMDatabase.m; sourceTree = ""; }; + 4E1E247B47D238DF1A3CD4023740ABED /* FMDB-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FMDB-dummy.m"; sourceTree = ""; }; + 4ED400452FCC7EFE1840A90F6457330B /* Pods-LLDebugToolDemoTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-LLDebugToolDemoTests"; path = Pods_LLDebugToolDemoTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 531436B4ABD904EFB8827FA20E022D7F /* ResourceBundle-YYModel-YYModel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-YYModel-YYModel-Info.plist"; sourceTree = ""; }; + 557B9D948F8AF7FF6DB8B7A1910D7F74 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 58074C249B49E949F4997DC9E0137A1F /* MapxusBaseSDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusBaseSDK.release.xcconfig; sourceTree = ""; }; + 5B21488BCB7A4439670CCBDD7BEF2E26 /* FMDatabaseQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseQueue.m; path = src/fmdb/FMDatabaseQueue.m; sourceTree = ""; }; + 5C394EB06333575C157C14C893D91FC1 /* MapxusComponentKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusComponentKit.debug.xcconfig; sourceTree = ""; }; + 5C50CFB41BAE7B85CCC68403AF504A20 /* Pods-LLDebugToolDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LLDebugToolDemo-umbrella.h"; sourceTree = ""; }; + 5D3C1A3030CEEA2DE715E9DA1F61DCE3 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + 5E3E689C78080E9B46194ABD45925AE4 /* Pods-LLDebugToolDemoUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LLDebugToolDemoUITests-dummy.m"; sourceTree = ""; }; + 6127CF712BD7FAF0818FE8605664F39C /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 639A350F13DEA94BC3F2591D2891DD7A /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; + 63D6F1DE71AD380B976609007FBED8E5 /* Pods-LLDebugToolDemoTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LLDebugToolDemoTests-umbrella.h"; sourceTree = ""; }; + 6661F1BFD570BD7056DEE8AD64D5C665 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + 66BAEE2771F00C24C4254EDC4E3E219B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = privacy/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 6A18EDC795C5191E61824099AAA4D20D /* Pods-LLDebugToolDemoTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemoTests-Info.plist"; sourceTree = ""; }; + 6F16884E83BA349664651EDD467248CD /* NSObject+YYModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+YYModel.m"; path = "YYModel/NSObject+YYModel.m"; sourceTree = ""; }; + 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 73072789ED34DF4CDD7033002C97B6D7 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 732546010F8694055BCFD5C11CEA5CC3 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; + 744219DC75D06D0F2AD8F837FD7018F9 /* Pods-LLDebugToolDemoUITests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LLDebugToolDemoUITests-frameworks.sh"; sourceTree = ""; }; + 76DEC71CE0799D5E7CD7FE7F6B87B807 /* FMResultSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMResultSet.m; path = src/fmdb/FMResultSet.m; sourceTree = ""; }; + 78D538AC98D30B7BE64EFE6C84C3F7AA /* YYModel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = YYModel.release.xcconfig; sourceTree = ""; }; + 7DA68880BB7144A292D6A552001A750F /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 7E150CAAA3EBF1F2305F7DCBCB53A0A2 /* MapxusBaseSDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusBaseSDK.debug.xcconfig; sourceTree = ""; }; + 7E6DB95C14C21C86668A1C788230A891 /* FMDB-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FMDB-Info.plist"; sourceTree = ""; }; + 7F06845A5D319643CD148EECCD3D01B3 /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; + 80DC7D7FEEC4C2142496CAE5A5CD77F1 /* Pods-LLDebugToolDemoTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LLDebugToolDemoTests-acknowledgements.markdown"; sourceTree = ""; }; + 81E6171886F7928B7B835358C43147F9 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 853E002F00143686178174151C3E3984 /* Pods-LLDebugToolDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemo.release.xcconfig"; sourceTree = ""; }; + 882F886FEE0FC5EF52DF04E5B805CEAF /* MapxusComponentKit.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = MapxusComponentKit.xcframework; path = dynamic/MapxusComponentKit.xcframework; sourceTree = ""; }; + 8AFE4D701DA80A7C0FDA5D8397DB9C22 /* Pods-LLDebugToolDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemo.debug.xcconfig"; sourceTree = ""; }; + 8E7C3BDC7B634125F16FF8CD58A653C8 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + 8FD442BE77300A261A000CD2DD3948C3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = AFNetworking/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 8FF0224F3CA3472F68AB104BE0A318CF /* Pods-LLDebugToolDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LLDebugToolDemo-acknowledgements.markdown"; sourceTree = ""; }; + 9099407859FF97AAF39E65654FED48BB /* YYClassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = YYClassInfo.m; path = YYModel/YYClassInfo.m; sourceTree = ""; }; + 9290F5D930C002F0CE3CC1D27D98318E /* YYModel-YYModel */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "YYModel-YYModel"; path = YYModel.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B3E40F7F0ADA8F1F09948E116E6186B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = YYModel/PrivacyInfo.xcprivacy; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A3A80BA70CFB7F75C5391BEBBBA8C9DA /* libFMDB.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFMDB.a; path = libFMDB.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A4FA15D44DF6BAC7550EDEED10862AA3 /* libAFNetworking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libAFNetworking.a; path = libAFNetworking.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A882275C4FE369DE843C620605A2EE90 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - AB97776E6BB63F826DAE734FCEE4549E /* FMResultSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMResultSet.h; path = src/fmdb/FMResultSet.h; sourceTree = ""; }; - AC4A44F5C56FB8EA399DC57FDE27072F /* Pods-LLDebugToolDemoTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LLDebugToolDemoTests-acknowledgements.markdown"; sourceTree = ""; }; - B0DE52D038A4BFFA029F0F7E3EB24551 /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; - B4382DA8DE1621D813C9FD2617E6FD7E /* Pods-LLDebugToolDemoTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LLDebugToolDemoTests-dummy.m"; sourceTree = ""; }; - B4C3DC82540D1213F1398BF75DBB993E /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - B899C9E7861D5F532A82A373ABECEFCD /* Pods-LLDebugToolDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LLDebugToolDemo-acknowledgements.markdown"; sourceTree = ""; }; - BFB16E880B892DFB2145CB1C1206E5D0 /* Pods-LLDebugToolDemoUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoUITests.release.xcconfig"; sourceTree = ""; }; - C1D971A56F2C092213C980B38AFC34E2 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - C31EE336671A97A97EF151F3E171C8AD /* Pods-LLDebugToolDemoUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LLDebugToolDemoUITests-dummy.m"; sourceTree = ""; }; - C5CE668A34BD02E96312ED4410758688 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - CA4889ED8C20C140C120DFB06A6468FB /* Pods-LLDebugToolDemoUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LLDebugToolDemoUITests-acknowledgements.markdown"; sourceTree = ""; }; - D1A80ED1D6A98F5E39FB402C79D8825C /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - DDE9D4874D4D70029D6EA5AA8161250E /* FMDatabasePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabasePool.m; path = src/fmdb/FMDatabasePool.m; sourceTree = ""; }; - DE617E6E58F0D1583BA3E3D12C5C5286 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - E14A5F25E2004BE92E90E831464E6B72 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - E633E860C2E32158D97A6E29B10A4F15 /* Pods-LLDebugToolDemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoTests.release.xcconfig"; sourceTree = ""; }; - E79CF9CB66EA8701F0513DF33D3AA613 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - ECBF214D8CB8815E110DCA3CDB0ED3F2 /* Pods-LLDebugToolDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemo-acknowledgements.plist"; sourceTree = ""; }; - ECC164CE119C960E48E28CD855383D6E /* Pods-LLDebugToolDemoUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoUITests.debug.xcconfig"; sourceTree = ""; }; - EEF9703E69A4686E142401B363DCD946 /* Pods-LLDebugToolDemoTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemoTests-acknowledgements.plist"; sourceTree = ""; }; - F3CABB2FB798D0B2EB13A02F105BAA20 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - FD6EDDDA065216F258C0266C36F977EE /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "UIKit+AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; + 9DC2A17B4E2D29986D8385C58338F1DF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + 9E26A3B8EE09FF5232681611981AB91A /* ResourceBundle-FMDB-FMDB-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-FMDB-FMDB-Info.plist"; sourceTree = ""; }; + 9F1D35C72DC3506C160C5DA0CC2C1582 /* FMDB.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FMDB.debug.xcconfig; sourceTree = ""; }; + 9FAA1756F19BE71BEEAF0A1F468B423F /* YYModel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = YYModel.modulemap; sourceTree = ""; }; + A3A80BA70CFB7F75C5391BEBBBA8C9DA /* FMDB */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FMDB; path = FMDB.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AFNetworking; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A56B4BBA108B020CE270D08D4A6B3169 /* FMDB-FMDB */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "FMDB-FMDB"; path = FMDB.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + A926A3CCCA0775B1D1DD3D0F3E39A1B6 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + A9B6522A919075138B431590BDDEA6AC /* Pods-LLDebugToolDemoUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemoUITests-Info.plist"; sourceTree = ""; }; + A9E083797C4F5DC24BBD634B9D0FB35C /* FMDatabasePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabasePool.m; path = src/fmdb/FMDatabasePool.m; sourceTree = ""; }; + AADB6928ECFD8B87168394F7B981A1CC /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + AB319BB63CA306A127BAE8E790DED646 /* MapxusRenderSDK-xcframeworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "MapxusRenderSDK-xcframeworks.sh"; sourceTree = ""; }; + AE1E84C81CC884ED13EBE0B7F4FD8504 /* FMResultSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMResultSet.h; path = src/fmdb/FMResultSet.h; sourceTree = ""; }; + AEA8DE20A8BCE7F2BD76500A7894EB78 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + AF8800476B484B6268B8D81AC246634C /* Pods-LLDebugToolDemoTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemoTests-acknowledgements.plist"; sourceTree = ""; }; + B2892CB4C5247D8B5A32784CD64129EE /* FMDatabaseAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FMDatabaseAdditions.m; path = src/fmdb/FMDatabaseAdditions.m; sourceTree = ""; }; + B3B75CB1963FD96C20AC2D587A3B4A11 /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; + B5E384D6F4E9D3819CEC87F7249EB5E1 /* FMDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabase.h; path = src/fmdb/FMDatabase.h; sourceTree = ""; }; + BB2DA817AA406AA22E08B5EB9808A20D /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + BB97C92DC85E872485EA9E7EEF0A8D62 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; + BBD8A71A22F52519A5D6632D7C55813B /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + BF7C44F795ADBF7AE37F83A98BCD2A2F /* MapxusComponentKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusComponentKit.release.xcconfig; sourceTree = ""; }; + C0031CDB7D613C79046781415313C05A /* FMDatabaseAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDatabaseAdditions.h; path = src/fmdb/FMDatabaseAdditions.h; sourceTree = ""; }; + C006C588E3BA42FDCF480774C4F895EC /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + C2D7DAF8776F69678906856B7EF08EDB /* Pods-LLDebugToolDemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoTests.release.xcconfig"; sourceTree = ""; }; + C392E735F1A9E8FC9D19BA0C2E897F66 /* MapxusMapSDK-xcframeworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "MapxusMapSDK-xcframeworks.sh"; sourceTree = ""; }; + C5F730E8C95DA5DB8401553EA71AA1BD /* NSObject+YYModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+YYModel.h"; path = "YYModel/NSObject+YYModel.h"; sourceTree = ""; }; + C65C17C6FA45231FCB0DD55F237C7A26 /* MapxusMapSDK.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = MapxusMapSDK.xcframework; path = dynamic/MapxusMapSDK.xcframework; sourceTree = ""; }; + CA631E56F72216BDE539B0A523BC795E /* YYModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "YYModel-dummy.m"; sourceTree = ""; }; + CA6A3231EEA20B39C1AD4B29DCAC508D /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; + CBFF20D7B0474714664507AFDDEE5E3F /* Pods-LLDebugToolDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemo-acknowledgements.plist"; sourceTree = ""; }; + CFF682AA90C07E6ECA7541BEA4795827 /* FMDB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FMDB.h; path = src/fmdb/FMDB.h; sourceTree = ""; }; + D42C70FB75B841A6F6CE2D67125D7F97 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + D44F7A88DB12E0B11D576095E5D285FF /* Pods-LLDebugToolDemoUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LLDebugToolDemoUITests-acknowledgements.plist"; sourceTree = ""; }; + D8325BC05179104998CF4EF90ACB91CF /* FMDB-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FMDB-prefix.pch"; sourceTree = ""; }; + D90C3BDB58E2665424D84269E9FD9CA9 /* MapxusRenderSDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MapxusRenderSDK.debug.xcconfig; sourceTree = ""; }; + D9C7E50D068F851ADF1323DDE3836C62 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + DCD0130DDBB13921F5A9E12EEA6B02C2 /* Pods-LLDebugToolDemoUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoUITests.debug.xcconfig"; sourceTree = ""; }; + DFFDAF099D92CCD56B17B8D12BB40A21 /* Pods-LLDebugToolDemo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LLDebugToolDemo.modulemap"; sourceTree = ""; }; + E460D5B0416D36F66EE8EC89E5D2FA0A /* YYModel */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = YYModel; path = YYModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E60A50AFF5DC45E1CF4E7134580F6D30 /* Pods-LLDebugToolDemoUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LLDebugToolDemoUITests.release.xcconfig"; sourceTree = ""; }; + E66A0773FE6892424899E0F4C32F7F68 /* MapxusBaseSDK.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = MapxusBaseSDK.xcframework; path = dynamic/MapxusBaseSDK.xcframework; sourceTree = ""; }; + E938BE973ED6465465744037985FA61A /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + E98CF8032B8183326BE6D722C0E68560 /* Pods-LLDebugToolDemoUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LLDebugToolDemoUITests.modulemap"; sourceTree = ""; }; + EA6169169DD88675B92798870FB98F19 /* Pods-LLDebugToolDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LLDebugToolDemo-frameworks.sh"; sourceTree = ""; }; + EE7F6B77ED576E515D072C3A77F549C3 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + F28CCB753CC225A200FC6E842BF56FB5 /* Pods-LLDebugToolDemoTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LLDebugToolDemoTests-frameworks.sh"; sourceTree = ""; }; + F303AB13477FCFEB5744A5DB866BD88D /* Pods-LLDebugToolDemoUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LLDebugToolDemoUITests-acknowledgements.markdown"; sourceTree = ""; }; + F6D26A56AB4B2EFE2355E47074889E8E /* YYModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YYModel.h; path = YYModel/YYModel.h; sourceTree = ""; }; + F895FC4C65B441BF02B54763B27486B9 /* FMDB.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FMDB.modulemap; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2976A4F63268EF294555CC88086EBEDB /* Frameworks */ = { + 048033452710B9F22AD8F972158F0F8D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 067CF43A3C7B29EC19EAD51024590CEE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 71A941F43DEFA69B8C954BC1669A131C /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 167CC5042B24288B818D953EBF1FCEFD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 492EB2557B917590E7DF1F4F72B20CD9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C1BB3EEDB03AE8A63C0B465AD3C31D58 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 72E0033EAD2B9EF344BBF913F92DAB04 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5E4174EAEFCAADDFC9522D7D0E580CA8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 74CA1619F24B79CC712A86A70DED135F /* Frameworks */ = { + 886BAF04909FE2533CEEAAFF358E6F4C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + FF23B21305F917EA0B9D46403B687A03 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9DA9A67283D5F02BBB781FE60804C549 /* Frameworks */ = { + 8B5D7C614EAAD06EF6ADD55F5384D780 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 7B0DE49CC7A9CAB1933DC1424D0EFAAA /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D50CAD41546AE06DB74C7165AA8E0648 /* Frameworks */ = { + A7B7AA8322C2229FD578214F4EE4750C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - E3172EC142F0AEBCDD261FDE3EEE3875 /* Frameworks */ = { + A9EBAA38126E04E28913391BFAD7FF0D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D6774E4D53A682A26A4FF9D0037BCE82 /* CoreFoundation.framework in Frameworks */, + F5824F799D325F8428194607290B286D /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0596CAF7752E6D97422CF3105CA2ED6B /* Pods-LLDebugToolDemoUITests */ = { + 0DC1682257B6587AC531518057373C56 /* Serialization */ = { isa = PBXGroup; children = ( - CA4889ED8C20C140C120DFB06A6468FB /* Pods-LLDebugToolDemoUITests-acknowledgements.markdown */, - 5FE4D503D738DD81E3C5998648CE272D /* Pods-LLDebugToolDemoUITests-acknowledgements.plist */, - C31EE336671A97A97EF151F3E171C8AD /* Pods-LLDebugToolDemoUITests-dummy.m */, - ECC164CE119C960E48E28CD855383D6E /* Pods-LLDebugToolDemoUITests.debug.xcconfig */, - BFB16E880B892DFB2145CB1C1206E5D0 /* Pods-LLDebugToolDemoUITests.release.xcconfig */, + 3A17CE596511D6158C053679DE3AEAB0 /* AFURLRequestSerialization.h */, + 1EBF0BD0A6C5AF82B086FAEAC5322896 /* AFURLRequestSerialization.m */, + AADB6928ECFD8B87168394F7B981A1CC /* AFURLResponseSerialization.h */, + 557B9D948F8AF7FF6DB8B7A1910D7F74 /* AFURLResponseSerialization.m */, ); - name = "Pods-LLDebugToolDemoUITests"; - path = "Target Support Files/Pods-LLDebugToolDemoUITests"; + name = Serialization; + sourceTree = ""; + }; + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + CA0B54151950C65E1106A4385A9BA060 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 1DDCBB0A9885387523BE2C187566B243 /* Pods-LLDebugToolDemo */ = { + isa = PBXGroup; + children = ( + DFFDAF099D92CCD56B17B8D12BB40A21 /* Pods-LLDebugToolDemo.modulemap */, + 8FF0224F3CA3472F68AB104BE0A318CF /* Pods-LLDebugToolDemo-acknowledgements.markdown */, + CBFF20D7B0474714664507AFDDEE5E3F /* Pods-LLDebugToolDemo-acknowledgements.plist */, + 4B5B2BA5A523C6767514A7E55E02A4B2 /* Pods-LLDebugToolDemo-dummy.m */, + EA6169169DD88675B92798870FB98F19 /* Pods-LLDebugToolDemo-frameworks.sh */, + 2C65282047AC06858011AEF4A1C97C65 /* Pods-LLDebugToolDemo-Info.plist */, + 5C50CFB41BAE7B85CCC68403AF504A20 /* Pods-LLDebugToolDemo-umbrella.h */, + 8AFE4D701DA80A7C0FDA5D8397DB9C22 /* Pods-LLDebugToolDemo.debug.xcconfig */, + 853E002F00143686178174151C3E3984 /* Pods-LLDebugToolDemo.release.xcconfig */, + ); + name = "Pods-LLDebugToolDemo"; + path = "Target Support Files/Pods-LLDebugToolDemo"; + sourceTree = ""; + }; + 26BBCEE24BEF8FAE1EE856E9964B585F /* Frameworks */ = { + isa = PBXGroup; + children = ( + E66A0773FE6892424899E0F4C32F7F68 /* MapxusBaseSDK.xcframework */, + ); + name = Frameworks; sourceTree = ""; }; - 2B462568E39EE93F8F45A31BA41CC2F4 /* Support Files */ = { + 27A3A598D80B117A69D0788B314D5A77 /* Support Files */ = { isa = PBXGroup; children = ( - 3F493014DB95E30909BF833484405061 /* AFNetworking.xcconfig */, - D1A80ED1D6A98F5E39FB402C79D8825C /* AFNetworking-dummy.m */, - E14A5F25E2004BE92E90E831464E6B72 /* AFNetworking-prefix.pch */, + 639A350F13DEA94BC3F2591D2891DD7A /* AFNetworking.modulemap */, + 0D709707424BC205C78DDEBE8CD7CDF9 /* AFNetworking-dummy.m */, + 34E563D1591C4D6DD8D355CB610F5B44 /* AFNetworking-Info.plist */, + 43E9E1D16DE1ADD74A02A0D3CAD1647A /* AFNetworking-prefix.pch */, + CA6A3231EEA20B39C1AD4B29DCAC508D /* AFNetworking-umbrella.h */, + BB97C92DC85E872485EA9E7EEF0A8D62 /* AFNetworking.debug.xcconfig */, + B3B75CB1963FD96C20AC2D587A3B4A11 /* AFNetworking.release.xcconfig */, + 358463D5437D7FBB42648236323D894F /* ResourceBundle-AFNetworking-AFNetworking-Info.plist */, ); name = "Support Files"; path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; - 47C35DF53FD3F7843196B7ADEA643E68 /* NSURLSession */ = { + 32B9AA54AA732998FA96448A4867E8C8 /* MapxusBaseSDK */ = { isa = PBXGroup; children = ( - 3FD0CC7F8649F75D9C57CF075469C3D0 /* AFCompatibilityMacros.h */, - A882275C4FE369DE843C620605A2EE90 /* AFHTTPSessionManager.h */, - 21DE2D05C4FBE7D9F1827B29BB6AB296 /* AFHTTPSessionManager.m */, - F3CABB2FB798D0B2EB13A02F105BAA20 /* AFURLSessionManager.h */, - 891F8082ACA7CF965846B1A41B4BC4A1 /* AFURLSessionManager.m */, + 26BBCEE24BEF8FAE1EE856E9964B585F /* Frameworks */, + FE41AF3ADEFFEEF38B2ADAA884ABE016 /* Support Files */, ); - name = NSURLSession; + name = MapxusBaseSDK; + path = MapxusBaseSDK; sourceTree = ""; }; - 5803BD1EA096828B979C34BADDCFB3B8 /* Security */ = { + 4A538FE437AD893905EADC9C61785E8D /* UIKit */ = { isa = PBXGroup; children = ( - DE617E6E58F0D1583BA3E3D12C5C5286 /* AFSecurityPolicy.h */, - 50BE92E0EC85F85E8C3103338BB2D0E4 /* AFSecurityPolicy.m */, + 16DDABA778C802E7944F8788B113FCB4 /* AFAutoPurgingImageCache.h */, + 1B76C50475A0F45CB57981283AE931AC /* AFAutoPurgingImageCache.m */, + 5D3C1A3030CEEA2DE715E9DA1F61DCE3 /* AFImageDownloader.h */, + 31C1FA4C3B633E464772518E8E6C07D3 /* AFImageDownloader.m */, + D9C7E50D068F851ADF1323DDE3836C62 /* AFNetworkActivityIndicatorManager.h */, + 0E99DEA81D1976437BD76C32F25C7820 /* AFNetworkActivityIndicatorManager.m */, + EE7F6B77ED576E515D072C3A77F549C3 /* UIActivityIndicatorView+AFNetworking.h */, + 8E7C3BDC7B634125F16FF8CD58A653C8 /* UIActivityIndicatorView+AFNetworking.m */, + D42C70FB75B841A6F6CE2D67125D7F97 /* UIButton+AFNetworking.h */, + BBD8A71A22F52519A5D6632D7C55813B /* UIButton+AFNetworking.m */, + 73072789ED34DF4CDD7033002C97B6D7 /* UIImageView+AFNetworking.h */, + 3CD5A7B67BD94B5D5D89113BA7D70546 /* UIImageView+AFNetworking.m */, + 81E6171886F7928B7B835358C43147F9 /* UIKit+AFNetworking.h */, + E938BE973ED6465465744037985FA61A /* UIProgressView+AFNetworking.h */, + 2AD4BCAF4E3EF18260DDE575E485BD8F /* UIProgressView+AFNetworking.m */, + A926A3CCCA0775B1D1DD3D0F3E39A1B6 /* UIRefreshControl+AFNetworking.h */, + 073267F2766339A6194C83013A6C7915 /* UIRefreshControl+AFNetworking.m */, + 7F06845A5D319643CD148EECCD3D01B3 /* WKWebView+AFNetworking.h */, + 732546010F8694055BCFD5C11CEA5CC3 /* WKWebView+AFNetworking.m */, ); - name = Security; + name = UIKit; sourceTree = ""; }; - 67D958BE12F89DC3B33BF6E724C6A7AE /* Pods */ = { + 4EA71141279E08F97353FE3F7C08EC30 /* Support Files */ = { isa = PBXGroup; children = ( - DC9EF1C53919B0FC4A4039F99F365DA4 /* AFNetworking */, - D3C02859A1C9B88D9CFF6259396B64BA /* FMDB */, + C392E735F1A9E8FC9D19BA0C2E897F66 /* MapxusMapSDK-xcframeworks.sh */, + 221A24FF0AA85800376B560E8EB3322B /* MapxusMapSDK.debug.xcconfig */, + 0A948C6BDD7A45A79D40ECFCA8357AE3 /* MapxusMapSDK.release.xcconfig */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/MapxusMapSDK"; sourceTree = ""; }; - 7A090EFD722D248A16BD3CFFB378925D /* Serialization */ = { + 5303276BA705C309D7975CDDDC89D958 /* Frameworks */ = { isa = PBXGroup; children = ( - 29CC854AC54311B56339F6AB99CDBE98 /* AFURLRequestSerialization.h */, - B4C3DC82540D1213F1398BF75DBB993E /* AFURLRequestSerialization.m */, - 0F9ABC67F03B216F842BC806C9DFAA80 /* AFURLResponseSerialization.h */, - 522611C278669BFBAAE612A35E35ED67 /* AFURLResponseSerialization.m */, + 38DD0DA75FF3D4C24319880B730979A0 /* Mapbox.xcframework */, ); - name = Serialization; + name = Frameworks; sourceTree = ""; }; - 7C121FF6239F7C4D104C204660581B22 /* Pods-LLDebugToolDemoTests */ = { + 5EEC94374FF2214B64E5A69B138ED991 /* Support Files */ = { isa = PBXGroup; children = ( - AC4A44F5C56FB8EA399DC57FDE27072F /* Pods-LLDebugToolDemoTests-acknowledgements.markdown */, - EEF9703E69A4686E142401B363DCD946 /* Pods-LLDebugToolDemoTests-acknowledgements.plist */, - B4382DA8DE1621D813C9FD2617E6FD7E /* Pods-LLDebugToolDemoTests-dummy.m */, - 15E67019C63A435ADAB47CD3E9B1A5C5 /* Pods-LLDebugToolDemoTests.debug.xcconfig */, - E633E860C2E32158D97A6E29B10A4F15 /* Pods-LLDebugToolDemoTests.release.xcconfig */, + 21E01F7DA982D5B7E81516D1D447DE02 /* MapxusComponentKit-xcframeworks.sh */, + 5C394EB06333575C157C14C893D91FC1 /* MapxusComponentKit.debug.xcconfig */, + BF7C44F795ADBF7AE37F83A98BCD2A2F /* MapxusComponentKit.release.xcconfig */, ); - name = "Pods-LLDebugToolDemoTests"; - path = "Target Support Files/Pods-LLDebugToolDemoTests"; + name = "Support Files"; + path = "../Target Support Files/MapxusComponentKit"; sourceTree = ""; }; - 859578D90D0EC2417EBD237CCE0E3270 /* Support Files */ = { + 632E2B39C68A59B9757F4D69DD584480 /* Support Files */ = { isa = PBXGroup; children = ( - 98918A72F637E6318A2ED6E7735D4A0C /* FMDB.xcconfig */, - 0D3ECB7039FB43540947EE6A9042DAD1 /* FMDB-dummy.m */, - 7503BE41D1D69B2D7A9667267D50EA9E /* FMDB-prefix.pch */, + F895FC4C65B441BF02B54763B27486B9 /* FMDB.modulemap */, + 4E1E247B47D238DF1A3CD4023740ABED /* FMDB-dummy.m */, + 7E6DB95C14C21C86668A1C788230A891 /* FMDB-Info.plist */, + D8325BC05179104998CF4EF90ACB91CF /* FMDB-prefix.pch */, + 411EB79AC2DFCB25E934693675658A19 /* FMDB-umbrella.h */, + 9F1D35C72DC3506C160C5DA0CC2C1582 /* FMDB.debug.xcconfig */, + 3F77C7B270B3F3334A95F296516D84D3 /* FMDB.release.xcconfig */, + 9E26A3B8EE09FF5232681611981AB91A /* ResourceBundle-FMDB-FMDB-Info.plist */, ); name = "Support Files"; path = "../Target Support Files/FMDB"; sourceTree = ""; }; - 876C3029A42A2301ABC7E5F58BD4607A /* standard */ = { + 649C7A4403885A2D99BAE07D96694A83 /* Resources */ = { isa = PBXGroup; children = ( - 1B638483C9B0170A802AF7504B51F1F3 /* FMDatabase.h */, - 469697AF248A76A9EFEFA643276133C3 /* FMDatabase.m */, - 52B2A92CFF183013D2A189C88432D04F /* FMDatabaseAdditions.h */, - 8CBF69676A2D2D2572AA0F2CC673AC38 /* FMDatabaseAdditions.m */, - 65B0950914F7D98423500165D65014C9 /* FMDatabasePool.h */, - DDE9D4874D4D70029D6EA5AA8161250E /* FMDatabasePool.m */, - 93AA2C6618A0188D6F12B47990DB6841 /* FMDatabaseQueue.h */, - 5DCF2E9C4C9853509C03A3394D002B20 /* FMDatabaseQueue.m */, - 909A2A422ABD5DB9E2411B5B42253E90 /* FMDB.h */, - AB97776E6BB63F826DAE734FCEE4549E /* FMResultSet.h */, - 678FBCD57CEB19F24299920286D380DC /* FMResultSet.m */, + 9B3E40F7F0ADA8F1F09948E116E6186B /* PrivacyInfo.xcprivacy */, ); - name = standard; + name = Resources; sourceTree = ""; }; - B74A4C7CF88A039DB8E8F95F2B101AD5 /* UIKit */ = { + 68940618C7C31596933E7E34B9F2C554 /* Pods-LLDebugToolDemoTests */ = { isa = PBXGroup; children = ( - 6A5408E95192F3FA3572E201A5D1B919 /* AFAutoPurgingImageCache.h */, - 1E2C451426A60B7703763C2C789DF290 /* AFAutoPurgingImageCache.m */, - 20631F59E6F0881E2F76C95C5C754872 /* AFImageDownloader.h */, - 083CEC88770D0FFAF9C22DE74CC33F7E /* AFImageDownloader.m */, - E79CF9CB66EA8701F0513DF33D3AA613 /* AFNetworkActivityIndicatorManager.h */, - 38D3192C110FBA446A495E7CE9AFC93E /* AFNetworkActivityIndicatorManager.m */, - 6404DA3E2915464649E92586432F65BB /* UIActivityIndicatorView+AFNetworking.h */, - C5CE668A34BD02E96312ED4410758688 /* UIActivityIndicatorView+AFNetworking.m */, - 3960090AC37916265DEFC1F2C10CA1E7 /* UIButton+AFNetworking.h */, - 1D3DB308F57B0392F1D4B87EE0512F95 /* UIButton+AFNetworking.m */, - FD6EDDDA065216F258C0266C36F977EE /* UIImage+AFNetworking.h */, - C1D971A56F2C092213C980B38AFC34E2 /* UIImageView+AFNetworking.h */, - 1C2E23C8D1D832FD6B4CD03BD17BA801 /* UIImageView+AFNetworking.m */, - 2F99B3E80617C8281F952E7E57EA75F0 /* UIKit+AFNetworking.h */, - 8C136A572630EBE6B7B549E0D3D0E598 /* UIProgressView+AFNetworking.h */, - 77EF8125A1A7884570122B84E3ABE0D6 /* UIProgressView+AFNetworking.m */, - 8A49D9F32C8246B8ABBD00FEFAB05712 /* UIRefreshControl+AFNetworking.h */, - 4242A197A95C21DCD6A86DB835554C14 /* UIRefreshControl+AFNetworking.m */, - 68A85DBCFCE55E75913E833D933B16A6 /* UIWebView+AFNetworking.h */, - B0DE52D038A4BFFA029F0F7E3EB24551 /* UIWebView+AFNetworking.m */, + 1397D2D36D8843D78F9065D7EF0578A5 /* Pods-LLDebugToolDemoTests.modulemap */, + 80DC7D7FEEC4C2142496CAE5A5CD77F1 /* Pods-LLDebugToolDemoTests-acknowledgements.markdown */, + AF8800476B484B6268B8D81AC246634C /* Pods-LLDebugToolDemoTests-acknowledgements.plist */, + 45002A1DF5066DEBACFD1CDC8A3BF480 /* Pods-LLDebugToolDemoTests-dummy.m */, + F28CCB753CC225A200FC6E842BF56FB5 /* Pods-LLDebugToolDemoTests-frameworks.sh */, + 6A18EDC795C5191E61824099AAA4D20D /* Pods-LLDebugToolDemoTests-Info.plist */, + 63D6F1DE71AD380B976609007FBED8E5 /* Pods-LLDebugToolDemoTests-umbrella.h */, + 11236E3ED54FA94CF1649BD9931BCC61 /* Pods-LLDebugToolDemoTests.debug.xcconfig */, + C2D7DAF8776F69678906856B7EF08EDB /* Pods-LLDebugToolDemoTests.release.xcconfig */, ); - name = UIKit; + name = "Pods-LLDebugToolDemoTests"; + path = "Target Support Files/Pods-LLDebugToolDemoTests"; + sourceTree = ""; + }; + 7D7412ED9C6F67F5A79A77E35021BA3C /* Products */ = { + isa = PBXGroup; + children = ( + A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, + 47EC2A91CCF85694CE4066E4C34CE690 /* AFNetworking-AFNetworking */, + A3A80BA70CFB7F75C5391BEBBBA8C9DA /* FMDB */, + A56B4BBA108B020CE270D08D4A6B3169 /* FMDB-FMDB */, + 0C00F6591C60C296CBE8BE9CD09ED4E5 /* Pods-LLDebugToolDemo */, + 4ED400452FCC7EFE1840A90F6457330B /* Pods-LLDebugToolDemoTests */, + 2F607EDF7B65012C80C62261B117B44B /* Pods-LLDebugToolDemoUITests */, + E460D5B0416D36F66EE8EC89E5D2FA0A /* YYModel */, + 9290F5D930C002F0CE3CC1D27D98318E /* YYModel-YYModel */, + ); + name = Products; sourceTree = ""; }; - B9B41272532DBD6B4AC0F096614807F4 /* Reachability */ = { + 7E8145A98C14214633B1F304097E9125 /* Reachability */ = { isa = PBXGroup; children = ( - 163E0D3F6CB290170ADB583DDE1DB8F3 /* AFNetworkReachabilityManager.h */, - 61B85312E2D584B223B5BC8B3E17E0DD /* AFNetworkReachabilityManager.m */, + 6661F1BFD570BD7056DEE8AD64D5C665 /* AFNetworkReachabilityManager.h */, + 2BAFC66819877F0B713B02019B402093 /* AFNetworkReachabilityManager.m */, ); name = Reachability; sourceTree = ""; }; + 84841C3F5E31E68CE8A4CAEB5CD8E006 /* Resources */ = { + isa = PBXGroup; + children = ( + 66BAEE2771F00C24C4254EDC4E3E219B /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 8DAD2DF4E9E14E370FD9238F877E00FF /* AFNetworking */ = { + isa = PBXGroup; + children = ( + 112781273FAEE5FC1BC7813C3FE9D356 /* AFNetworking.h */, + F4A3D1A476CE0CC4917030CC6C55BE0E /* NSURLSession */, + 7E8145A98C14214633B1F304097E9125 /* Reachability */, + A852E0B5195267802DCB865B98D194A0 /* Resources */, + F6F05C27DEE91334435665508DFD998E /* Security */, + 0DC1682257B6587AC531518057373C56 /* Serialization */, + 27A3A598D80B117A69D0788B314D5A77 /* Support Files */, + 4A538FE437AD893905EADC9C61785E8D /* UIKit */, + ); + name = AFNetworking; + path = AFNetworking; + sourceTree = ""; + }; + A411CC077A4D59C30CB33D2C135124F7 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 1DDCBB0A9885387523BE2C187566B243 /* Pods-LLDebugToolDemo */, + 68940618C7C31596933E7E34B9F2C554 /* Pods-LLDebugToolDemoTests */, + B31A325F37856BD22F465DEC8CAFB1C0 /* Pods-LLDebugToolDemoUITests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + A439F69DA3EE0C7CD05B54497517EAD8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 882F886FEE0FC5EF52DF04E5B805CEAF /* MapxusComponentKit.xcframework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A852E0B5195267802DCB865B98D194A0 /* Resources */ = { + isa = PBXGroup; + children = ( + 8FD442BE77300A261A000CD2DD3948C3 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + AFD8F9E2E42777D7AC4BFA7653849DB8 /* Pods */ = { + isa = PBXGroup; + children = ( + 8DAD2DF4E9E14E370FD9238F877E00FF /* AFNetworking */, + D6A499B3DB53F3127CD32C6F0C74BCF4 /* FMDB */, + 32B9AA54AA732998FA96448A4867E8C8 /* MapxusBaseSDK */, + DA02F8653CD6FE0F278CE5F1655D846B /* MapxusComponentKit */, + D59FD8EC0CDDB8F2C2001F64065ACA15 /* MapxusMapSDK */, + E0A0B69A4DDDCDA9C488C61303C8C07F /* MapxusRenderSDK */, + B63AF8B7660482D19701759966655AE1 /* YYModel */, + ); + name = Pods; + sourceTree = ""; + }; + B2EAB753C62DBA6FC985F655435B6E67 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C65C17C6FA45231FCB0DD55F237C7A26 /* MapxusMapSDK.xcframework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B31A325F37856BD22F465DEC8CAFB1C0 /* Pods-LLDebugToolDemoUITests */ = { + isa = PBXGroup; + children = ( + E98CF8032B8183326BE6D722C0E68560 /* Pods-LLDebugToolDemoUITests.modulemap */, + F303AB13477FCFEB5744A5DB866BD88D /* Pods-LLDebugToolDemoUITests-acknowledgements.markdown */, + D44F7A88DB12E0B11D576095E5D285FF /* Pods-LLDebugToolDemoUITests-acknowledgements.plist */, + 5E3E689C78080E9B46194ABD45925AE4 /* Pods-LLDebugToolDemoUITests-dummy.m */, + 744219DC75D06D0F2AD8F837FD7018F9 /* Pods-LLDebugToolDemoUITests-frameworks.sh */, + A9B6522A919075138B431590BDDEA6AC /* Pods-LLDebugToolDemoUITests-Info.plist */, + 2C2BBCCB59F7D7258DC18036691614A7 /* Pods-LLDebugToolDemoUITests-umbrella.h */, + DCD0130DDBB13921F5A9E12EEA6B02C2 /* Pods-LLDebugToolDemoUITests.debug.xcconfig */, + E60A50AFF5DC45E1CF4E7134580F6D30 /* Pods-LLDebugToolDemoUITests.release.xcconfig */, + ); + name = "Pods-LLDebugToolDemoUITests"; + path = "Target Support Files/Pods-LLDebugToolDemoUITests"; + sourceTree = ""; + }; + B48267C4E606FE4BE86FE203F2DD7F2C /* standard */ = { + isa = PBXGroup; + children = ( + B5E384D6F4E9D3819CEC87F7249EB5E1 /* FMDatabase.h */, + 4C9A00F759FAD60FF4DDDD06A7A46D04 /* FMDatabase.m */, + C0031CDB7D613C79046781415313C05A /* FMDatabaseAdditions.h */, + B2892CB4C5247D8B5A32784CD64129EE /* FMDatabaseAdditions.m */, + 21301E9BA5682BF9960268B9D8B3026A /* FMDatabasePool.h */, + A9E083797C4F5DC24BBD634B9D0FB35C /* FMDatabasePool.m */, + 492A40202CA6F69A71DE7C4B600EDF05 /* FMDatabaseQueue.h */, + 5B21488BCB7A4439670CCBDD7BEF2E26 /* FMDatabaseQueue.m */, + CFF682AA90C07E6ECA7541BEA4795827 /* FMDB.h */, + AE1E84C81CC884ED13EBE0B7F4FD8504 /* FMResultSet.h */, + 76DEC71CE0799D5E7CD7FE7F6B87B807 /* FMResultSet.m */, + ); + name = standard; + sourceTree = ""; + }; + B63AF8B7660482D19701759966655AE1 /* YYModel */ = { + isa = PBXGroup; + children = ( + C5F730E8C95DA5DB8401553EA71AA1BD /* NSObject+YYModel.h */, + 6F16884E83BA349664651EDD467248CD /* NSObject+YYModel.m */, + 35A78DE830CEF6BE77A9CF23A8AC7E84 /* YYClassInfo.h */, + 9099407859FF97AAF39E65654FED48BB /* YYClassInfo.m */, + F6D26A56AB4B2EFE2355E47074889E8E /* YYModel.h */, + 649C7A4403885A2D99BAE07D96694A83 /* Resources */, + F1874A67B2250DDE35A8629F2F919973 /* Support Files */, + ); + name = YYModel; + path = YYModel; + sourceTree = ""; + }; + CA0B54151950C65E1106A4385A9BA060 /* iOS */ = { + isa = PBXGroup; + children = ( + 9DC2A17B4E2D29986D8385C58338F1DF /* CoreFoundation.framework */, + 6F2E5A279E1DDC04956E0761E7DC6CC6 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - 67D958BE12F89DC3B33BF6E724C6A7AE /* Pods */, - D52B7B8C6C10D0C896D939202AE6EAB3 /* Products */, - E848DCD9653DF122DEF67BDB42765AA6 /* Targets Support Files */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + AFD8F9E2E42777D7AC4BFA7653849DB8 /* Pods */, + 7D7412ED9C6F67F5A79A77E35021BA3C /* Products */, + A411CC077A4D59C30CB33D2C135124F7 /* Targets Support Files */, ); sourceTree = ""; }; - D26121ECD04416F9894917F21FC921CD /* Pods-LLDebugToolDemo */ = { + D59FD8EC0CDDB8F2C2001F64065ACA15 /* MapxusMapSDK */ = { isa = PBXGroup; children = ( - B899C9E7861D5F532A82A373ABECEFCD /* Pods-LLDebugToolDemo-acknowledgements.markdown */, - ECBF214D8CB8815E110DCA3CDB0ED3F2 /* Pods-LLDebugToolDemo-acknowledgements.plist */, - 2356270002B6DD8FDF709D52864D3E3C /* Pods-LLDebugToolDemo-dummy.m */, - 49490A62E551053A478EA84E728FF3A2 /* Pods-LLDebugToolDemo.debug.xcconfig */, - 645DB048BA12D63A0929A9AACCF59AF0 /* Pods-LLDebugToolDemo.release.xcconfig */, + B2EAB753C62DBA6FC985F655435B6E67 /* Frameworks */, + 4EA71141279E08F97353FE3F7C08EC30 /* Support Files */, ); - name = "Pods-LLDebugToolDemo"; - path = "Target Support Files/Pods-LLDebugToolDemo"; + name = MapxusMapSDK; + path = MapxusMapSDK; sourceTree = ""; }; - D3C02859A1C9B88D9CFF6259396B64BA /* FMDB */ = { + D6A499B3DB53F3127CD32C6F0C74BCF4 /* FMDB */ = { isa = PBXGroup; children = ( - 876C3029A42A2301ABC7E5F58BD4607A /* standard */, - 859578D90D0EC2417EBD237CCE0E3270 /* Support Files */, + 84841C3F5E31E68CE8A4CAEB5CD8E006 /* Resources */, + B48267C4E606FE4BE86FE203F2DD7F2C /* standard */, + 632E2B39C68A59B9757F4D69DD584480 /* Support Files */, ); name = FMDB; path = FMDB; sourceTree = ""; }; - D52B7B8C6C10D0C896D939202AE6EAB3 /* Products */ = { + DA02F8653CD6FE0F278CE5F1655D846B /* MapxusComponentKit */ = { isa = PBXGroup; children = ( - A4FA15D44DF6BAC7550EDEED10862AA3 /* libAFNetworking.a */, - A3A80BA70CFB7F75C5391BEBBBA8C9DA /* libFMDB.a */, - 0C00F6591C60C296CBE8BE9CD09ED4E5 /* libPods-LLDebugToolDemo.a */, - 4ED400452FCC7EFE1840A90F6457330B /* libPods-LLDebugToolDemoTests.a */, - 2F607EDF7B65012C80C62261B117B44B /* libPods-LLDebugToolDemoUITests.a */, + A439F69DA3EE0C7CD05B54497517EAD8 /* Frameworks */, + 5EEC94374FF2214B64E5A69B138ED991 /* Support Files */, ); - name = Products; + name = MapxusComponentKit; + path = MapxusComponentKit; sourceTree = ""; }; - D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { + E0A0B69A4DDDCDA9C488C61303C8C07F /* MapxusRenderSDK */ = { isa = PBXGroup; children = ( + 5303276BA705C309D7975CDDDC89D958 /* Frameworks */, + F57C00A8CEE2E44530CFBFC2F4510E9F /* Support Files */, ); - name = Frameworks; + name = MapxusRenderSDK; + path = MapxusRenderSDK; sourceTree = ""; }; - DC9EF1C53919B0FC4A4039F99F365DA4 /* AFNetworking */ = { + F1874A67B2250DDE35A8629F2F919973 /* Support Files */ = { isa = PBXGroup; children = ( - 39CE300F759B29E1E87BBB9FD8C95829 /* AFNetworking.h */, - 47C35DF53FD3F7843196B7ADEA643E68 /* NSURLSession */, - B9B41272532DBD6B4AC0F096614807F4 /* Reachability */, - 5803BD1EA096828B979C34BADDCFB3B8 /* Security */, - 7A090EFD722D248A16BD3CFFB378925D /* Serialization */, - 2B462568E39EE93F8F45A31BA41CC2F4 /* Support Files */, - B74A4C7CF88A039DB8E8F95F2B101AD5 /* UIKit */, + 531436B4ABD904EFB8827FA20E022D7F /* ResourceBundle-YYModel-YYModel-Info.plist */, + 9FAA1756F19BE71BEEAF0A1F468B423F /* YYModel.modulemap */, + CA631E56F72216BDE539B0A523BC795E /* YYModel-dummy.m */, + 175F19FE3C898BD86FB3DC6D3C8A3118 /* YYModel-Info.plist */, + 341DBE990B97D11BE47EB27EFBEAE8EC /* YYModel-prefix.pch */, + 3A996AA5CCBA25368D354DCD62E23155 /* YYModel-umbrella.h */, + 0F7DF3E6BF619A8998B52388F63B1623 /* YYModel.debug.xcconfig */, + 78D538AC98D30B7BE64EFE6C84C3F7AA /* YYModel.release.xcconfig */, ); - name = AFNetworking; - path = AFNetworking; + name = "Support Files"; + path = "../Target Support Files/YYModel"; sourceTree = ""; }; - E848DCD9653DF122DEF67BDB42765AA6 /* Targets Support Files */ = { + F4A3D1A476CE0CC4917030CC6C55BE0E /* NSURLSession */ = { isa = PBXGroup; children = ( - D26121ECD04416F9894917F21FC921CD /* Pods-LLDebugToolDemo */, - 7C121FF6239F7C4D104C204660581B22 /* Pods-LLDebugToolDemoTests */, - 0596CAF7752E6D97422CF3105CA2ED6B /* Pods-LLDebugToolDemoUITests */, + 7DA68880BB7144A292D6A552001A750F /* AFCompatibilityMacros.h */, + AEA8DE20A8BCE7F2BD76500A7894EB78 /* AFHTTPSessionManager.h */, + 485D3C6E7C85EF4216D8512B460D9BB9 /* AFHTTPSessionManager.m */, + BB2DA817AA406AA22E08B5EB9808A20D /* AFURLSessionManager.h */, + 0A0969C9EF62C1F481D98AAB22619392 /* AFURLSessionManager.m */, ); - name = "Targets Support Files"; + name = NSURLSession; + sourceTree = ""; + }; + F57C00A8CEE2E44530CFBFC2F4510E9F /* Support Files */ = { + isa = PBXGroup; + children = ( + AB319BB63CA306A127BAE8E790DED646 /* MapxusRenderSDK-xcframeworks.sh */, + D90C3BDB58E2665424D84269E9FD9CA9 /* MapxusRenderSDK.debug.xcconfig */, + 2972C496DEA1FCDB14CAA13662E01003 /* MapxusRenderSDK.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/MapxusRenderSDK"; + sourceTree = ""; + }; + F6F05C27DEE91334435665508DFD998E /* Security */ = { + isa = PBXGroup; + children = ( + 6127CF712BD7FAF0818FE8605664F39C /* AFSecurityPolicy.h */, + C006C588E3BA42FDCF480774C4F895EC /* AFSecurityPolicy.m */, + ); + name = Security; + sourceTree = ""; + }; + FE41AF3ADEFFEEF38B2ADAA884ABE016 /* Support Files */ = { + isa = PBXGroup; + children = ( + 4328D8268FCE62AF5F5D8BE4016B0C06 /* MapxusBaseSDK-xcframeworks.sh */, + 7E150CAAA3EBF1F2305F7DCBCB53A0A2 /* MapxusBaseSDK.debug.xcconfig */, + 58074C249B49E949F4997DC9E0137A1F /* MapxusBaseSDK.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/MapxusBaseSDK"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 1719BD8C8C5FB63E8E3A195F3CF29331 /* Headers */ = { + 2EEDE1556363CFDB09923F749CD69FF9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E88089864E230F53FB43EA40466E4483 /* Pods-LLDebugToolDemoTests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 53388C84FB0A54D5C9CE3CF0130120E8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C06F61A759022A62864BD9F8EE3660F3 /* AFAutoPurgingImageCache.h in Headers */, - 0343B86E9B9F5619970FCBD7370E033A /* AFCompatibilityMacros.h in Headers */, - D280A3B13923FF5FA778EF312BD965F7 /* AFHTTPSessionManager.h in Headers */, - 6B5B030904BA451F4FFE3AF2FD28D2DA /* AFImageDownloader.h in Headers */, - FEAA3C60F4BDDAC22BD1A6B047DBAAE9 /* AFNetworkActivityIndicatorManager.h in Headers */, - 5FF1B4EEDEE8BCA2E676E2548A412B02 /* AFNetworking.h in Headers */, - 1102564C9CDAC18DF8D6DB20F6523E72 /* AFNetworkReachabilityManager.h in Headers */, - B00EA522A62498626388BC649DFE2996 /* AFSecurityPolicy.h in Headers */, - D569D00367B456F6CDFE2700097562FC /* AFURLRequestSerialization.h in Headers */, - 9A7A3B80A68DB4A21A6833AA4683A7AD /* AFURLResponseSerialization.h in Headers */, - 05AB469F0F79C648F8E637F88CDB9E97 /* AFURLSessionManager.h in Headers */, - 418985D1EA0253EAA3C02FC1F31CA5E8 /* UIActivityIndicatorView+AFNetworking.h in Headers */, - 0C26E8CE5202114A92A9CFFBA1A9CE88 /* UIButton+AFNetworking.h in Headers */, - B27878E3B8F8ADB1FE01DBD6CB5812E7 /* UIImage+AFNetworking.h in Headers */, - F9AD2CFBEDD600706B921428D25DFA3A /* UIImageView+AFNetworking.h in Headers */, - C1EE07F0E0B54668574633B545FBCE48 /* UIKit+AFNetworking.h in Headers */, - D3DC240631E1FA883A5604B3E99BAE2B /* UIProgressView+AFNetworking.h in Headers */, - A845819E8332E3CA279E6B00EAA55366 /* UIRefreshControl+AFNetworking.h in Headers */, - 337C8A9592224E2629F71F4759AE0DF2 /* UIWebView+AFNetworking.h in Headers */, + 15E78DCD7D67E3072E64B49479F6F4CB /* AFAutoPurgingImageCache.h in Headers */, + 2503A07349B0BC851418F40EDD3BEE96 /* AFCompatibilityMacros.h in Headers */, + EA9A33DFF2188E0D3B60333D0797B8DD /* AFHTTPSessionManager.h in Headers */, + 3C449893C865F4B23F9B9C766643D3D5 /* AFImageDownloader.h in Headers */, + 1AE7E0867E1471C36D931DE878A0D822 /* AFNetworkActivityIndicatorManager.h in Headers */, + 36636B63F61E0ED99D2F9291524B954C /* AFNetworking.h in Headers */, + 7627CAE9E24F809738175E70446AC678 /* AFNetworking-umbrella.h in Headers */, + 16AD1C7A8DD870BA28CD0072B9DB9A6E /* AFNetworkReachabilityManager.h in Headers */, + A5E9F06D5A0C117F1A9FD8F97D6DE21B /* AFSecurityPolicy.h in Headers */, + 4810ADDE839004D23FFDD5862C3CAC97 /* AFURLRequestSerialization.h in Headers */, + 7FE700060FE1EFC64FFAACC4B875D03F /* AFURLResponseSerialization.h in Headers */, + 514067D55F326D8AC31E6E1164865B23 /* AFURLSessionManager.h in Headers */, + A9C9682A7EE6916677DBD2885BA04F5E /* UIActivityIndicatorView+AFNetworking.h in Headers */, + 3A59A254FD4A71E2E99D556C11FBF077 /* UIButton+AFNetworking.h in Headers */, + C487018B886BB232DB2A3703C7C6C5EC /* UIImageView+AFNetworking.h in Headers */, + 16CB8696E55C8FAACFEAFB58642846DB /* UIKit+AFNetworking.h in Headers */, + 0B8D47C43A777540CF41FFAF6FA11B55 /* UIProgressView+AFNetworking.h in Headers */, + 79EC9393BC5F3CFF2E57FC211A812A81 /* UIRefreshControl+AFNetworking.h in Headers */, + 8F7C686945C3C2F81CE45E6EBB5E9651 /* WKWebView+AFNetworking.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 47704B65F3C620338E1B412128CA8044 /* Headers */ = { + 8A65F26AE9311288B2345599AC174A1E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 32A4365623A37E5A820F8D40B327E0DA /* NSObject+YYModel.h in Headers */, + F3370945AB8B0C4EC1B60E83DDE0EBD3 /* YYClassInfo.h in Headers */, + 461C3FD27FE9181BE25DDC344DF1B511 /* YYModel.h in Headers */, + 7531AB87418B2ADFB66E4CC795111250 /* YYModel-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4DBA0CE83F82A468FB70D106B39AB9B6 /* Headers */ = { + 972027ECB5DDC4B0D4EF9D92ABEDB5C3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B09C5828976A79D6FD85E522C9A4C4CB /* Pods-LLDebugToolDemo-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6FAA42EEE7057FDFC6F1B814823FE867 /* Headers */ = { + DBC28E70333913F2648F158A8B89DA8A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 5B7D7918EBB86DAC25AE56C10684C672 /* Pods-LLDebugToolDemoUITests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B143D63E972D164E6E2FD0B0174CAD8A /* Headers */ = { + FA79C6B33334966C16215C597A38E0BC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 398FC0E13848217BC98F9215DAE5C663 /* FMDatabase.h in Headers */, - 98DBC9027ECC60B163947E6399D0F6B7 /* FMDatabaseAdditions.h in Headers */, - 0E5E810A0B7DE1DE6C762A83F205627A /* FMDatabasePool.h in Headers */, - 861524F850CD59D6534F97F2B5C40AB4 /* FMDatabaseQueue.h in Headers */, - CBEAEBE624B50122E0EC213F3E9075C8 /* FMDB.h in Headers */, - EED31E671953DD497F06459263FE8083 /* FMResultSet.h in Headers */, + 3DAFEB56D44F40213CF0732F6BEE196C /* FMDatabase.h in Headers */, + AADA72A94BBD6A1854203E3E6A5E6575 /* FMDatabaseAdditions.h in Headers */, + 545F9D1137600CD4806CEC4D918246D3 /* FMDatabasePool.h in Headers */, + 4CF88A6FFB95FB3D645B5B30667D9A65 /* FMDatabaseQueue.h in Headers */, + 199AF8DDA33958AADC4803758DBFFA95 /* FMDB.h in Headers */, + AD134A2ACA27D6250950C1E21B064C27 /* FMDB-umbrella.h in Headers */, + 30DCE7D7C6C2777241BB82241C110EC0 /* FMResultSet.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -521,96 +1006,178 @@ /* Begin PBXNativeTarget section */ 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */ = { isa = PBXNativeTarget; - buildConfigurationList = EE91476FFEA2C3B3AB024E94672BCFF2 /* Build configuration list for PBXNativeTarget "AFNetworking" */; + buildConfigurationList = 646EF5C9DE32F8354FD494A3815CC485 /* Build configuration list for PBXNativeTarget "AFNetworking" */; buildPhases = ( - 1719BD8C8C5FB63E8E3A195F3CF29331 /* Headers */, - 0013C2F4C1357617646EA156AF532732 /* Sources */, - 74CA1619F24B79CC712A86A70DED135F /* Frameworks */, + 53388C84FB0A54D5C9CE3CF0130120E8 /* Headers */, + C063CD89D3772E22912EC04D0B2517CD /* Sources */, + 492EB2557B917590E7DF1F4F72B20CD9 /* Frameworks */, + 8AAB01715F4131F93CF42A83C2E3A6F3 /* Resources */, ); buildRules = ( ); dependencies = ( + 7BD9A192C5EF9BAA6ACD1C9A866339CE /* PBXTargetDependency */, ); name = AFNetworking; productName = AFNetworking; - productReference = A4FA15D44DF6BAC7550EDEED10862AA3 /* libAFNetworking.a */; - productType = "com.apple.product-type.library.static"; + productReference = A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */; + productType = "com.apple.product-type.framework"; }; 1ADB06AE1FECA2DD11E02C5ED4C5D42E /* Pods-LLDebugToolDemoTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 87E096D45C37DAAA1D2364CAC85AE0C1 /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoTests" */; + buildConfigurationList = 6CF589DB62C0EF271D96AC18D22D3DBB /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoTests" */; buildPhases = ( - 6FAA42EEE7057FDFC6F1B814823FE867 /* Headers */, - 235B40A029BCF589DF8C150045F678E9 /* Sources */, - 9DA9A67283D5F02BBB781FE60804C549 /* Frameworks */, + 2EEDE1556363CFDB09923F749CD69FF9 /* Headers */, + 9B29913410A638646ECF08D9A321CB5F /* Sources */, + 8B5D7C614EAAD06EF6ADD55F5384D780 /* Frameworks */, + A77F6EE294A83C4935DE6747C9286C90 /* Resources */, ); buildRules = ( ); dependencies = ( - 0A872322BDC22BA487D47CA51A996676 /* PBXTargetDependency */, - 026D735014177672EDEA852E83D88FCD /* PBXTargetDependency */, - 4421BE7F772859DD209883D1AF97C5A9 /* PBXTargetDependency */, + 311137A02AD56A3E0CA98BDBFDEFA1C2 /* PBXTargetDependency */, + 731FBAEDD4CD1B369504C0BA4C6D733D /* PBXTargetDependency */, + 1C91CF4F3E7AD44EF0E74D3EDBA78EC3 /* PBXTargetDependency */, ); name = "Pods-LLDebugToolDemoTests"; - productName = "Pods-LLDebugToolDemoTests"; - productReference = 4ED400452FCC7EFE1840A90F6457330B /* libPods-LLDebugToolDemoTests.a */; - productType = "com.apple.product-type.library.static"; + productName = Pods_LLDebugToolDemoTests; + productReference = 4ED400452FCC7EFE1840A90F6457330B /* Pods-LLDebugToolDemoTests */; + productType = "com.apple.product-type.framework"; }; - 8592E0E389D40AC17881400ADC67ABC0 /* FMDB */ = { + 64099C83F5A7EE32C2ED24364CAF33A3 /* AFNetworking-AFNetworking */ = { isa = PBXNativeTarget; - buildConfigurationList = CEC4A4D479D1F3C3021E42D05B0EDD44 /* Build configuration list for PBXNativeTarget "FMDB" */; + buildConfigurationList = FDB235B9E93BFCD841FEBC6D09018BF0 /* Build configuration list for PBXNativeTarget "AFNetworking-AFNetworking" */; buildPhases = ( - B143D63E972D164E6E2FD0B0174CAD8A /* Headers */, - 52F22BCF422B0E7B9EA72D0B23D8C10A /* Sources */, - 2976A4F63268EF294555CC88086EBEDB /* Frameworks */, + EB4C192F85E44DEE82797976846F62C0 /* Sources */, + 167CC5042B24288B818D953EBF1FCEFD /* Frameworks */, + 3700E38D4CAAD5D5E9C2F80974DA5220 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = FMDB; - productName = FMDB; - productReference = A3A80BA70CFB7F75C5391BEBBBA8C9DA /* libFMDB.a */; - productType = "com.apple.product-type.library.static"; + name = "AFNetworking-AFNetworking"; + productName = AFNetworking; + productReference = 47EC2A91CCF85694CE4066E4C34CE690 /* AFNetworking-AFNetworking */; + productType = "com.apple.product-type.bundle"; }; - AA3D853207DDC095A24EA903282EB398 /* Pods-LLDebugToolDemoUITests */ = { + 84B44807A12996D487A4A591A481D6A0 /* YYModel */ = { isa = PBXNativeTarget; - buildConfigurationList = F80060BB493B57BDAC2093D4FE90F8AA /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoUITests" */; + buildConfigurationList = 4486B4114BE95272AE8E7DCC55E3AB65 /* Build configuration list for PBXNativeTarget "YYModel" */; buildPhases = ( - 4DBA0CE83F82A468FB70D106B39AB9B6 /* Headers */, - FAC99A2937471C4178EC27EB265E18BC /* Sources */, - E3172EC142F0AEBCDD261FDE3EEE3875 /* Frameworks */, + 8A65F26AE9311288B2345599AC174A1E /* Headers */, + EBDFB7D8B490BD69A1BD1F02EB7F886E /* Sources */, + A9EBAA38126E04E28913391BFAD7FF0D /* Frameworks */, + BF7A02CD3BB25DF8A60675CBF0DA885F /* Resources */, ); buildRules = ( ); dependencies = ( - 995972ACA2D0EBE97BEC3274BED4A4FE /* PBXTargetDependency */, - 3AF397965490281FC62983713ACB59CB /* PBXTargetDependency */, - 8CA13922124FCF522ABD08A6D1F7E9AB /* PBXTargetDependency */, + 9943CD218BE753BBB9933289806A1D11 /* PBXTargetDependency */, ); - name = "Pods-LLDebugToolDemoUITests"; - productName = "Pods-LLDebugToolDemoUITests"; - productReference = 2F607EDF7B65012C80C62261B117B44B /* libPods-LLDebugToolDemoUITests.a */; - productType = "com.apple.product-type.library.static"; + name = YYModel; + productName = YYModel; + productReference = E460D5B0416D36F66EE8EC89E5D2FA0A /* YYModel */; + productType = "com.apple.product-type.framework"; + }; + 8592E0E389D40AC17881400ADC67ABC0 /* FMDB */ = { + isa = PBXNativeTarget; + buildConfigurationList = A97A64590F284B4FAC7A91773F2D5CD5 /* Build configuration list for PBXNativeTarget "FMDB" */; + buildPhases = ( + FA79C6B33334966C16215C597A38E0BC /* Headers */, + F03A3941E8CFA35025DF6C3945AC6E30 /* Sources */, + 72E0033EAD2B9EF344BBF913F92DAB04 /* Frameworks */, + B23198B3ED0E141ACAE2399C159552C0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B27D1736126DF622508A8C715B706FA7 /* PBXTargetDependency */, + ); + name = FMDB; + productName = FMDB; + productReference = A3A80BA70CFB7F75C5391BEBBBA8C9DA /* FMDB */; + productType = "com.apple.product-type.framework"; + }; + A4E70AD0D1BF7835267AA2C20BAADFA4 /* YYModel-YYModel */ = { + isa = PBXNativeTarget; + buildConfigurationList = 78F0A275F3CA485BE85738AA08062CD3 /* Build configuration list for PBXNativeTarget "YYModel-YYModel" */; + buildPhases = ( + C752D3BA15D4FA30DC46506870A5A230 /* Sources */, + 048033452710B9F22AD8F972158F0F8D /* Frameworks */, + F41E839E7BD4231E4C7CD6133A3F080E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "YYModel-YYModel"; + productName = YYModel; + productReference = 9290F5D930C002F0CE3CC1D27D98318E /* YYModel-YYModel */; + productType = "com.apple.product-type.bundle"; + }; + AA3D853207DDC095A24EA903282EB398 /* Pods-LLDebugToolDemoUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 78CDF8360D2FA9D6987965990D01AD42 /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoUITests" */; + buildPhases = ( + DBC28E70333913F2648F158A8B89DA8A /* Headers */, + CF01657C5AFF22AE30BD6AB9DB9A5B0A /* Sources */, + 886BAF04909FE2533CEEAAFF358E6F4C /* Frameworks */, + BD4BA9DB846EED7E6963131E69E31902 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + CBAA64D69378896B59F1AEEADEBFC011 /* PBXTargetDependency */, + 26582343CB73CE0BE1C113AD01AD4F51 /* PBXTargetDependency */, + 370E7F027A2DC7172C3DFF9DEE87963F /* PBXTargetDependency */, + ); + name = "Pods-LLDebugToolDemoUITests"; + productName = Pods_LLDebugToolDemoUITests; + productReference = 2F607EDF7B65012C80C62261B117B44B /* Pods-LLDebugToolDemoUITests */; + productType = "com.apple.product-type.framework"; }; D04677D31BCA9D5D337FA3CFAEEC2D02 /* Pods-LLDebugToolDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = 42149ADFFAFC3A105FFA55FD4AD52465 /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemo" */; + buildConfigurationList = 25EA1BAED6E9306200423D37299A489B /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemo" */; buildPhases = ( - 47704B65F3C620338E1B412128CA8044 /* Headers */, - C6F09E83099EAE615ECB2EC895CECDAA /* Sources */, - D50CAD41546AE06DB74C7165AA8E0648 /* Frameworks */, + 972027ECB5DDC4B0D4EF9D92ABEDB5C3 /* Headers */, + DF5E25AE42EC2A6FF04CFD07A2C4F0B2 /* Sources */, + 067CF43A3C7B29EC19EAD51024590CEE /* Frameworks */, + BF0CB79162A39DE4F129A1F9D49A0485 /* Resources */, ); buildRules = ( ); dependencies = ( - 49270AD295024710C3C927EAF66A60C4 /* PBXTargetDependency */, - 2F2A77847FD015780AE8585973C41A84 /* PBXTargetDependency */, + A58D02D935E67C1F42D107EB36B000D2 /* PBXTargetDependency */, + 614C31E0DDD2EE18B65B5873AC3A5E8D /* PBXTargetDependency */, + 06651F3C451BF440BDBE44BC275D9772 /* PBXTargetDependency */, + C3EE29F08B2B3663166475F442E8DFB2 /* PBXTargetDependency */, + 3D7DE2182EEB517B4823AC5199D4C2DA /* PBXTargetDependency */, + 2166866E8D8E75E91F98FAEDEAE7630D /* PBXTargetDependency */, + 286472A14CDDBD9E22C14AF097425AE7 /* PBXTargetDependency */, ); name = "Pods-LLDebugToolDemo"; - productName = "Pods-LLDebugToolDemo"; - productReference = 0C00F6591C60C296CBE8BE9CD09ED4E5 /* libPods-LLDebugToolDemo.a */; - productType = "com.apple.product-type.library.static"; + productName = Pods_LLDebugToolDemo; + productReference = 0C00F6591C60C296CBE8BE9CD09ED4E5 /* Pods-LLDebugToolDemo */; + productType = "com.apple.product-type.framework"; + }; + F93E527462DAA7DF7BE13389C4F468F4 /* FMDB-FMDB */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9C3878B7315EA1127A0BC4034713970E /* Build configuration list for PBXNativeTarget "FMDB-FMDB" */; + buildPhases = ( + 3312DE1C13CB60E053399A44BFB22FB9 /* Sources */, + A7B7AA8322C2229FD578214F4EE4750C /* Frameworks */, + 81846A80BCB95D8C3D00258D0CEF79BA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "FMDB-FMDB"; + productName = FMDB; + productReference = A56B4BBA108B020CE270D08D4A6B3169 /* FMDB-FMDB */; + productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ @@ -618,215 +1185,557 @@ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; + LastSwiftUpdateCheck = 1500; + LastUpgradeCheck = 1500; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 8.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - en, Base, + en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = D52B7B8C6C10D0C896D939202AE6EAB3 /* Products */; + productRefGroup = 7D7412ED9C6F67F5A79A77E35021BA3C /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */, + 64099C83F5A7EE32C2ED24364CAF33A3 /* AFNetworking-AFNetworking */, 8592E0E389D40AC17881400ADC67ABC0 /* FMDB */, + F93E527462DAA7DF7BE13389C4F468F4 /* FMDB-FMDB */, + CEF4E35A9C0C98F4E940580A09766225 /* MapxusBaseSDK */, + 8E9F94E0793AD6C8262586CC8BFC15BE /* MapxusComponentKit */, + C954AAEBD3F02B1F1065A3AA8B37BC34 /* MapxusMapSDK */, + EC4B497CC021D47B5E1CDB9C0B0086D7 /* MapxusRenderSDK */, D04677D31BCA9D5D337FA3CFAEEC2D02 /* Pods-LLDebugToolDemo */, 1ADB06AE1FECA2DD11E02C5ED4C5D42E /* Pods-LLDebugToolDemoTests */, AA3D853207DDC095A24EA903282EB398 /* Pods-LLDebugToolDemoUITests */, + 84B44807A12996D487A4A591A481D6A0 /* YYModel */, + A4E70AD0D1BF7835267AA2C20BAADFA4 /* YYModel-YYModel */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 3700E38D4CAAD5D5E9C2F80974DA5220 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A9EEC3BCFEF85314E29FBB73241BA7F /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 81846A80BCB95D8C3D00258D0CEF79BA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDCF9D8CDDEED7BF12F9FD8FB6FC33D4 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AAB01715F4131F93CF42A83C2E3A6F3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BE3A4C8583BD309B43D9BC16EB39A85 /* AFNetworking-AFNetworking in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A77F6EE294A83C4935DE6747C9286C90 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B23198B3ED0E141ACAE2399C159552C0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 469B64AC04180DCE907783315EC29344 /* FMDB-FMDB in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BD4BA9DB846EED7E6963131E69E31902 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BF0CB79162A39DE4F129A1F9D49A0485 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BF7A02CD3BB25DF8A60675CBF0DA885F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 935B9309F409A7FEE1A05F6FD6A363A2 /* YYModel-YYModel in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F41E839E7BD4231E4C7CD6133A3F080E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C9ECC68BD389848E00DD75FE3B8ED0C7 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 05618E884369D6651F97D3BA10CB8DB0 /* [CP] Copy XCFrameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/MapxusComponentKit/MapxusComponentKit-xcframeworks.sh", + "${PODS_ROOT}/MapxusComponentKit/dynamic/MapxusComponentKit.xcframework", + ); + name = "[CP] Copy XCFrameworks"; + outputPaths = ( + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit/MapxusComponentKit.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/MapxusComponentKit/MapxusComponentKit-xcframeworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 416E578D8301EEAE18E8F1F1810F5F46 /* [CP] Copy XCFrameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/MapxusBaseSDK/MapxusBaseSDK-xcframeworks.sh", + "${PODS_ROOT}/MapxusBaseSDK/dynamic/MapxusBaseSDK.xcframework", + ); + name = "[CP] Copy XCFrameworks"; + outputPaths = ( + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK/MapxusBaseSDK.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/MapxusBaseSDK/MapxusBaseSDK-xcframeworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8703030D68276EE06420B357162CED05 /* [CP] Copy XCFrameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/MapxusMapSDK/MapxusMapSDK-xcframeworks.sh", + "${PODS_ROOT}/MapxusMapSDK/dynamic/MapxusMapSDK.xcframework", + ); + name = "[CP] Copy XCFrameworks"; + outputPaths = ( + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK/MapxusMapSDK.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/MapxusMapSDK/MapxusMapSDK-xcframeworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + F6304C6F9481B878E18C760CF98C339B /* [CP] Copy XCFrameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/MapxusRenderSDK/MapxusRenderSDK-xcframeworks.sh", + "${PODS_ROOT}/MapxusRenderSDK/Mapbox.xcframework", + ); + name = "[CP] Copy XCFrameworks"; + outputPaths = ( + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK/Mapbox.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/MapxusRenderSDK/MapxusRenderSDK-xcframeworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 0013C2F4C1357617646EA156AF532732 /* Sources */ = { + 3312DE1C13CB60E053399A44BFB22FB9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9B29913410A638646ECF08D9A321CB5F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5607AF83703C0AEDB12115740B6672BD /* AFAutoPurgingImageCache.m in Sources */, - 8231FDD98A7D1659F4FA5788AFEEE6DF /* AFHTTPSessionManager.m in Sources */, - 10EB9A7552672DC328F8695A98E605B3 /* AFImageDownloader.m in Sources */, - 1F66F73B61BEA115076A9CF7DD463832 /* AFNetworkActivityIndicatorManager.m in Sources */, - B098BC9005738774F6288FF2879FD51D /* AFNetworking-dummy.m in Sources */, - 3801A443834985F278FE479B54319B4F /* AFNetworkReachabilityManager.m in Sources */, - 1EA1235398DAC98440B2EFBE43839FD1 /* AFSecurityPolicy.m in Sources */, - 72797BC85469FCE7E6198B67EC88E851 /* AFURLRequestSerialization.m in Sources */, - 2C95C61175E1EB929A4B094581747835 /* AFURLResponseSerialization.m in Sources */, - E7351E56F4C49CE1F9559D5C69ECC1ED /* AFURLSessionManager.m in Sources */, - 551EDABAFCE6F89BB75C7174D4D9D059 /* UIActivityIndicatorView+AFNetworking.m in Sources */, - A16187923EA1A156F18C909206809C30 /* UIButton+AFNetworking.m in Sources */, - 40F9C3B7C0CCD0982FD14728F2595632 /* UIImageView+AFNetworking.m in Sources */, - 894126828AF68F98598CA7B53E737AEF /* UIProgressView+AFNetworking.m in Sources */, - 304FB2F3CB19F5C44D812D90AA2F1121 /* UIRefreshControl+AFNetworking.m in Sources */, - 5671A72ECAB90A855ECF6F69B750B4E1 /* UIWebView+AFNetworking.m in Sources */, + A6775F73FB56C041E4D023FBCDAC65A7 /* Pods-LLDebugToolDemoTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 235B40A029BCF589DF8C150045F678E9 /* Sources */ = { + C063CD89D3772E22912EC04D0B2517CD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - BE8A414116BF1163BB0904699251C75C /* Pods-LLDebugToolDemoTests-dummy.m in Sources */, + C36985925B84D4323036C4568A6DC336 /* AFAutoPurgingImageCache.m in Sources */, + 9A4F81DFF90532E56EDA868C0EE1FEDA /* AFHTTPSessionManager.m in Sources */, + A630AB9706794946221552303D187264 /* AFImageDownloader.m in Sources */, + D1FF858BE60CBBFF1FB0C50A031B260A /* AFNetworkActivityIndicatorManager.m in Sources */, + D26A0B4CD12EADE00D4BE6FEA741440D /* AFNetworking-dummy.m in Sources */, + E523841EC9E603B876656D45E1D5706A /* AFNetworkReachabilityManager.m in Sources */, + E2A6D01F53ED0631019E4BDD93008500 /* AFSecurityPolicy.m in Sources */, + FACD96F13FF22341ADB18C18F15A4263 /* AFURLRequestSerialization.m in Sources */, + 06EFAA27700B6FFDF6146555EB2F6A98 /* AFURLResponseSerialization.m in Sources */, + 46BCEC4FC345336524E15FAD43D816C2 /* AFURLSessionManager.m in Sources */, + 0216CF9755BC85EB03EBFEC39CF5D8F8 /* UIActivityIndicatorView+AFNetworking.m in Sources */, + DC91C8ECCB129B7638B778BFE48423AF /* UIButton+AFNetworking.m in Sources */, + 462D2CF16A48CB5825F45ECB334F4317 /* UIImageView+AFNetworking.m in Sources */, + D3E8A27DD3421590DD91E2C3E58907D9 /* UIProgressView+AFNetworking.m in Sources */, + 12A7A60AEFD471DF5A7D4141C680EE74 /* UIRefreshControl+AFNetworking.m in Sources */, + 83214D12690BB7FBBFF2FD7AAA3D937A /* WKWebView+AFNetworking.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 52F22BCF422B0E7B9EA72D0B23D8C10A /* Sources */ = { + C752D3BA15D4FA30DC46506870A5A230 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EB1502887E70C750681F9924BA8C83CC /* FMDatabase.m in Sources */, - 67A2F831427507A2F31BFB501C3A5226 /* FMDatabaseAdditions.m in Sources */, - 9864150CB1C5EED626F805CDD6EDC17A /* FMDatabasePool.m in Sources */, - 0E0171B9B36FCD1CAF55F60E617C7AD8 /* FMDatabaseQueue.m in Sources */, - D589398964FBAAF5E2C0B85495FE4892 /* FMDB-dummy.m in Sources */, - F7D264D3701AAF2368F1745E3F1BA13F /* FMResultSet.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C6F09E83099EAE615ECB2EC895CECDAA /* Sources */ = { + CF01657C5AFF22AE30BD6AB9DB9A5B0A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F77DFE3E0785BE57E733B362BF887F8D /* Pods-LLDebugToolDemo-dummy.m in Sources */, + E29652B48D6116BA1303CD7F59AB33EF /* Pods-LLDebugToolDemoUITests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FAC99A2937471C4178EC27EB265E18BC /* Sources */ = { + DF5E25AE42EC2A6FF04CFD07A2C4F0B2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C726ED0988A1C186BB9B6E60A6C47168 /* Pods-LLDebugToolDemoUITests-dummy.m in Sources */, + 051279691507032A00CCDF7D3AC50912 /* Pods-LLDebugToolDemo-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB4C192F85E44DEE82797976846F62C0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EBDFB7D8B490BD69A1BD1F02EB7F886E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9EADA6BA11791275E333413D89CE91D1 /* NSObject+YYModel.m in Sources */, + 28ACDCDA3829860FFA3AF9AA4D3D4A26 /* YYClassInfo.m in Sources */, + 4F01408D4F97D16B6E94160E31F80972 /* YYModel-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F03A3941E8CFA35025DF6C3945AC6E30 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 93D90786EF355809CCE4C1807F88E253 /* FMDatabase.m in Sources */, + 36E0C489A6D268945D2C5D920C90186E /* FMDatabaseAdditions.m in Sources */, + 9CF98B17C931E3E890C819D73D17C986 /* FMDatabasePool.m in Sources */, + CC7E02D68EAE86C6AAC787A14A6FD1A6 /* FMDatabaseQueue.m in Sources */, + 2D46E3F6F4CBF59E151B286A3AC2D61A /* FMDB-dummy.m in Sources */, + 1FBF760C322524836E1CA916147E48F3 /* FMResultSet.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 026D735014177672EDEA852E83D88FCD /* PBXTargetDependency */ = { + 06651F3C451BF440BDBE44BC275D9772 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusBaseSDK; + target = CEF4E35A9C0C98F4E940580A09766225 /* MapxusBaseSDK */; + targetProxy = A017D231B5C35C1AA273DBB5F902FE3C /* PBXContainerItemProxy */; + }; + 0BB01E422AEC359F522A3CEC332E4856 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusRenderSDK; + target = EC4B497CC021D47B5E1CDB9C0B0086D7 /* MapxusRenderSDK */; + targetProxy = 86EB9E6C937225509F993E972AAA3B43 /* PBXContainerItemProxy */; + }; + 1C91CF4F3E7AD44EF0E74D3EDBA78EC3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-LLDebugToolDemo"; + target = D04677D31BCA9D5D337FA3CFAEEC2D02 /* Pods-LLDebugToolDemo */; + targetProxy = 5DAE3409A2C30EB9F75CD90C81B065BE /* PBXContainerItemProxy */; + }; + 2166866E8D8E75E91F98FAEDEAE7630D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusRenderSDK; + target = EC4B497CC021D47B5E1CDB9C0B0086D7 /* MapxusRenderSDK */; + targetProxy = D9FEA51CDBA2EE9B2D8E7BF321CB7091 /* PBXContainerItemProxy */; + }; + 26582343CB73CE0BE1C113AD01AD4F51 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FMDB; target = 8592E0E389D40AC17881400ADC67ABC0 /* FMDB */; - targetProxy = 885097AE2CCCF67E260C7C4D1D6EBE86 /* PBXContainerItemProxy */; + targetProxy = 38C42BB5A71652B1E342C9C8CADD311A /* PBXContainerItemProxy */; }; - 0A872322BDC22BA487D47CA51A996676 /* PBXTargetDependency */ = { + 286472A14CDDBD9E22C14AF097425AE7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = YYModel; + target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; + targetProxy = 10D3AEB1709177B430F2785ADBBB5235 /* PBXContainerItemProxy */; + }; + 311137A02AD56A3E0CA98BDBFDEFA1C2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 3D0844B4B94BB45D5CC3F84C4BC21F1B /* PBXContainerItemProxy */; + targetProxy = A0942F31F810AEDB75DF57F75E6B9D6D /* PBXContainerItemProxy */; }; - 2F2A77847FD015780AE8585973C41A84 /* PBXTargetDependency */ = { + 370E7F027A2DC7172C3DFF9DEE87963F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-LLDebugToolDemo"; + target = D04677D31BCA9D5D337FA3CFAEEC2D02 /* Pods-LLDebugToolDemo */; + targetProxy = 06136C269FAF3410144AC8AF4F6EF463 /* PBXContainerItemProxy */; + }; + 3D7DE2182EEB517B4823AC5199D4C2DA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusMapSDK; + target = C954AAEBD3F02B1F1065A3AA8B37BC34 /* MapxusMapSDK */; + targetProxy = B2F91F822DDC1816F7CF169CABB92B33 /* PBXContainerItemProxy */; + }; + 48878AC3FD47595D8DFF792E789BD487 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusMapSDK; + target = C954AAEBD3F02B1F1065A3AA8B37BC34 /* MapxusMapSDK */; + targetProxy = 420A0B10C0FE7C7048539D67442EF6E8 /* PBXContainerItemProxy */; + }; + 614C31E0DDD2EE18B65B5873AC3A5E8D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FMDB; target = 8592E0E389D40AC17881400ADC67ABC0 /* FMDB */; - targetProxy = C2C86B1A77234E5A1D0ED4DFA9655FBF /* PBXContainerItemProxy */; + targetProxy = 20F099FAC856ED40439D642EF811F18A /* PBXContainerItemProxy */; }; - 3AF397965490281FC62983713ACB59CB /* PBXTargetDependency */ = { + 731FBAEDD4CD1B369504C0BA4C6D733D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FMDB; target = 8592E0E389D40AC17881400ADC67ABC0 /* FMDB */; - targetProxy = 0BB981463A739123DB65F7C2C0D49D91 /* PBXContainerItemProxy */; + targetProxy = 29F78C419D83AD592ADCD2ACF7BF9C55 /* PBXContainerItemProxy */; }; - 4421BE7F772859DD209883D1AF97C5A9 /* PBXTargetDependency */ = { + 7BD9A192C5EF9BAA6ACD1C9A866339CE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-LLDebugToolDemo"; - target = D04677D31BCA9D5D337FA3CFAEEC2D02 /* Pods-LLDebugToolDemo */; - targetProxy = A80FD6C00377B0CA87AA6F67721ED432 /* PBXContainerItemProxy */; + name = "AFNetworking-AFNetworking"; + target = 64099C83F5A7EE32C2ED24364CAF33A3 /* AFNetworking-AFNetworking */; + targetProxy = 37DD41B53C8CD7FD0E0E483252AC91A7 /* PBXContainerItemProxy */; + }; + 8AC0B4E7801955B37D38694DBD10C4E7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusBaseSDK; + target = CEF4E35A9C0C98F4E940580A09766225 /* MapxusBaseSDK */; + targetProxy = 7B33B36BCF02144A167BC3A046609D62 /* PBXContainerItemProxy */; }; - 49270AD295024710C3C927EAF66A60C4 /* PBXTargetDependency */ = { + 9943CD218BE753BBB9933289806A1D11 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "YYModel-YYModel"; + target = A4E70AD0D1BF7835267AA2C20BAADFA4 /* YYModel-YYModel */; + targetProxy = 5E6A36DE6DBE878EE31F3C792DA285AD /* PBXContainerItemProxy */; + }; + A58D02D935E67C1F42D107EB36B000D2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = BAF959003BC2D6AAA18F4D9DBFF58254 /* PBXContainerItemProxy */; + targetProxy = BDAE1C14A486505EC10CC460E845AA71 /* PBXContainerItemProxy */; }; - 8CA13922124FCF522ABD08A6D1F7E9AB /* PBXTargetDependency */ = { + B27D1736126DF622508A8C715B706FA7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-LLDebugToolDemo"; - target = D04677D31BCA9D5D337FA3CFAEEC2D02 /* Pods-LLDebugToolDemo */; - targetProxy = 4F97D71D77760F4EC6F7213388073426 /* PBXContainerItemProxy */; + name = "FMDB-FMDB"; + target = F93E527462DAA7DF7BE13389C4F468F4 /* FMDB-FMDB */; + targetProxy = FE1D3D648FBC9AA83FDE92AC86095F06 /* PBXContainerItemProxy */; }; - 995972ACA2D0EBE97BEC3274BED4A4FE /* PBXTargetDependency */ = { + C365330639C74D332FBAECAB8436A0E4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = YYModel; + target = 84B44807A12996D487A4A591A481D6A0 /* YYModel */; + targetProxy = 519CEFFF0DCB5F2F2958078044C46D66 /* PBXContainerItemProxy */; + }; + C3EE29F08B2B3663166475F442E8DFB2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MapxusComponentKit; + target = 8E9F94E0793AD6C8262586CC8BFC15BE /* MapxusComponentKit */; + targetProxy = 3D95B609D80F0FA4AA75DD19C77E2B71 /* PBXContainerItemProxy */; + }; + CBAA64D69378896B59F1AEEADEBFC011 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = DAAAD26BB24FFE4343415CABD56FF9EF /* PBXContainerItemProxy */; + }; + E9F97F6FE6D966593D3D254872233DC1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = FC7FA8996B0BE5D52C650B00240BF031 /* PBXContainerItemProxy */; + targetProxy = C6FEA28A467606C6A9D10F6D45561B87 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 1CBE026FCB306312BC735A09540C99DF /* Debug */ = { + 0CF044B2734739D7487F60DD1B6D7854 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15E67019C63A435ADAB47CD3E9B1A5C5 /* Pods-LLDebugToolDemoTests.debug.xcconfig */; + baseConfigurationReference = 9F1D35C72DC3506C160C5DA0CC2C1582 /* FMDB.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/FMDB"; + IBSC_MODULE = FMDB; + INFOPLIST_FILE = "Target Support Files/FMDB/ResourceBundle-FMDB-FMDB-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + PRODUCT_NAME = FMDB; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 0E6E133C6E9E966654D1FF01CA0B6C7B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D90C3BDB58E2665424D84269E9FD9CA9 /* MapxusRenderSDK.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 11CB0ED49FBDDE6BA958A0BCA77C2DB0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 11236E3ED54FA94CF1649BD9931BCC61 /* Pods-LLDebugToolDemoTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 32BB79BDE04BAD8316FFB8FFFE39E951 /* Release */ = { + 11D90D0DB17AF403CABECBA81E0DE102 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 645DB048BA12D63A0929A9AACCF59AF0 /* Pods-LLDebugToolDemo.release.xcconfig */; + baseConfigurationReference = B3B75CB1963FD96C20AC2D587A3B4A11 /* AFNetworking.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/AFNetworking/AFNetworking-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/AFNetworking/AFNetworking.modulemap"; + PRODUCT_MODULE_NAME = AFNetworking; + PRODUCT_NAME = AFNetworking; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; - 38CCE53C47CE4CA507057C90B84169AB /* Release */ = { + 16E742E8C0D3A5F1FD36F9685C5BA1B9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E633E860C2E32158D97A6E29B10A4F15 /* Pods-LLDebugToolDemoTests.release.xcconfig */; + baseConfigurationReference = 221A24FF0AA85800376B560E8EB3322B /* MapxusMapSDK.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 18715D9017494AEDC31A0E679A9BE51B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 58074C249B49E949F4997DC9E0137A1F /* MapxusBaseSDK.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */ = { + 1F13183FA3C927398C50AEBB4CB89170 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0F7DF3E6BF619A8998B52388F63B1623 /* YYModel.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/YYModel"; + IBSC_MODULE = YYModel; + INFOPLIST_FILE = "Target Support Files/YYModel/ResourceBundle-YYModel-YYModel-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = YYModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -849,6 +1758,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; @@ -856,13 +1766,16 @@ 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; + 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 = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -871,70 +1784,75 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; + name = Debug; + }; + 48EC0DF63F09F7CFF8E98231833AA714 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 78D538AC98D30B7BE64EFE6C84C3F7AA /* YYModel.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/YYModel"; + IBSC_MODULE = YYModel; + INFOPLIST_FILE = "Target Support Files/YYModel/ResourceBundle-YYModel-YYModel-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = YYModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; name = Release; }; - 5E472B313AAA528C22C1BF1D61D97C44 /* Debug */ = { + 4E4B020EE65CED4DF5B6BAE193083FFD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F493014DB95E30909BF833484405061 /* AFNetworking.xcconfig */; + baseConfigurationReference = BB97C92DC85E872485EA9E7EEF0A8D62 /* AFNetworking.debug.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = AFNetworking; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/AFNetworking"; + IBSC_MODULE = AFNetworking; + INFOPLIST_FILE = "Target Support Files/AFNetworking/ResourceBundle-AFNetworking-AFNetworking-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; PRODUCT_NAME = AFNetworking; - PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; }; name = Debug; }; - 7D739AC43A36CD3B68BEDC3B9DFA3B35 /* Release */ = { + 5AF2CA97498CB5CFE93334B3FA05FED7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 98918A72F637E6318A2ED6E7735D4A0C /* FMDB.xcconfig */; + baseConfigurationReference = B3B75CB1963FD96C20AC2D587A3B4A11 /* AFNetworking.release.xcconfig */; buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/FMDB/FMDB-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FMDB; - PRODUCT_NAME = FMDB; - PUBLIC_HEADERS_FOLDER_PATH = ""; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/AFNetworking"; + IBSC_MODULE = AFNetworking; + INFOPLIST_FILE = "Target Support Files/AFNetworking/ResourceBundle-AFNetworking-AFNetworking-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = AFNetworking; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = bundle; }; name = Release; }; - 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */ = { + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -957,6 +1875,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; @@ -964,16 +1883,13 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; 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 = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -982,139 +1898,470 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; + name = Release; + }; + 66D873437B02CBD0D0475E204AC6274A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5C394EB06333575C157C14C893D91FC1 /* MapxusComponentKit.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; name = Debug; }; - 9B2AFF354556003FE8A19356D062E45B /* Debug */ = { + 7414A37D7A67297B6B2A88DE09480791 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECC164CE119C960E48E28CD855383D6E /* Pods-LLDebugToolDemoUITests.debug.xcconfig */; + baseConfigurationReference = 3F77C7B270B3F3334A95F296516D84D3 /* FMDB.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/FMDB/FMDB-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/FMDB/FMDB-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/FMDB/FMDB.modulemap"; + PRODUCT_MODULE_NAME = FMDB; + PRODUCT_NAME = FMDB; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8B8F8BE7E6867B0CEA55C0782C52791F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C2D7DAF8776F69678906856B7EF08EDB /* Pods-LLDebugToolDemoTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - A6869057E1D18A775A29ACDF063E071D /* Debug */ = { + 92ABCA798772CF60A6BFE2CC8FC654E0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 98918A72F637E6318A2ED6E7735D4A0C /* FMDB.xcconfig */; + baseConfigurationReference = 0A948C6BDD7A45A79D40ECFCA8357AE3 /* MapxusMapSDK.release.xcconfig */; buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9849E9940F0E56966E0573DB5C2F0AA0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9F1D35C72DC3506C160C5DA0CC2C1582 /* FMDB.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/FMDB/FMDB-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; + INFOPLIST_FILE = "Target Support Files/FMDB/FMDB-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/FMDB/FMDB.modulemap"; PRODUCT_MODULE_NAME = FMDB; PRODUCT_NAME = FMDB; - PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - BB62E70E7C4E570E4464D732EA56FB24 /* Debug */ = { + A91A70F32CC255486ED3ED1A912921AD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 49490A62E551053A478EA84E728FF3A2 /* Pods-LLDebugToolDemo.debug.xcconfig */; + baseConfigurationReference = 2972C496DEA1FCDB14CAA13662E01003 /* MapxusRenderSDK.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B5CE73B23F0D308AC7260AE0664B58F2 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 78D538AC98D30B7BE64EFE6C84C3F7AA /* YYModel.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/YYModel/YYModel-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/YYModel/YYModel.modulemap"; + PRODUCT_MODULE_NAME = YYModel; + PRODUCT_NAME = YYModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + BDCA447B837BCF5E04034FBF7809874D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F77C7B270B3F3334A95F296516D84D3 /* FMDB.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/FMDB"; + IBSC_MODULE = FMDB; + INFOPLIST_FILE = "Target Support Files/FMDB/ResourceBundle-FMDB-FMDB-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + PRODUCT_NAME = FMDB; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + C2F6FFA48FFA7F81A766990A8B44F08C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7E150CAAA3EBF1F2305F7DCBCB53A0A2 /* MapxusBaseSDK.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C6BB2DBE34F4A06BC55B4E1F1B4E7C2E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BB97C92DC85E872485EA9E7EEF0A8D62 /* AFNetworking.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/AFNetworking/AFNetworking-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/AFNetworking/AFNetworking.modulemap"; + PRODUCT_MODULE_NAME = AFNetworking; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + CB9F1C342E2C94DBB6E9F6A92848C0F6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BF7C44F795ADBF7AE37F83A98BCD2A2F /* MapxusComponentKit.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + CE6093AEFF1DDB7071B08671B4DB4A98 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DCD0130DDBB13921F5A9E12EEA6B02C2 /* Pods-LLDebugToolDemoUITests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - D54B21B058E22EE59BDACEDFC2887054 /* Release */ = { + CE79EE514E20998E68D5C1B66731D629 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BFB16E880B892DFB2145CB1C1206E5D0 /* Pods-LLDebugToolDemoUITests.release.xcconfig */; + baseConfigurationReference = 8AFE4D701DA80A7C0FDA5D8397DB9C22 /* Pods-LLDebugToolDemo.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + E4D103F09EA07BE625B184058B03E40D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0F7DF3E6BF619A8998B52388F63B1623 /* YYModel.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/YYModel/YYModel-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/YYModel/YYModel.modulemap"; + PRODUCT_MODULE_NAME = YYModel; + PRODUCT_NAME = YYModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + E91BA6B59BFF567D6DBB30D38A3E5BA0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E60A50AFF5DC45E1CF4E7134580F6D30 /* Pods-LLDebugToolDemoUITests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; - F0E0DE99D8C9C7D10672428D98A470BF /* Release */ = { + F02CEC1458CDAF24BF4B970DD4B69034 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F493014DB95E30909BF833484405061 /* AFNetworking.xcconfig */; + baseConfigurationReference = 853E002F00143686178174151C3E3984 /* Pods-LLDebugToolDemo.release.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = AFNetworking; - PRODUCT_NAME = AFNetworking; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 42149ADFFAFC3A105FFA55FD4AD52465 /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemo" */ = { + 1EC02087B776DCE900A4A62B2422AC4B /* Build configuration list for PBXAggregateTarget "MapxusMapSDK" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 16E742E8C0D3A5F1FD36F9685C5BA1B9 /* Debug */, + 92ABCA798772CF60A6BFE2CC8FC654E0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 25EA1BAED6E9306200423D37299A489B /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE79EE514E20998E68D5C1B66731D629 /* Debug */, + F02CEC1458CDAF24BF4B970DD4B69034 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 261C62D5DE7710582FED75751C9E0584 /* Build configuration list for PBXAggregateTarget "MapxusBaseSDK" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C2F6FFA48FFA7F81A766990A8B44F08C /* Debug */, + 18715D9017494AEDC31A0E679A9BE51B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4486B4114BE95272AE8E7DCC55E3AB65 /* Build configuration list for PBXNativeTarget "YYModel" */ = { isa = XCConfigurationList; buildConfigurations = ( - BB62E70E7C4E570E4464D732EA56FB24 /* Debug */, - 32BB79BDE04BAD8316FFB8FFFE39E951 /* Release */, + E4D103F09EA07BE625B184058B03E40D /* Debug */, + B5CE73B23F0D308AC7260AE0664B58F2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1122,44 +2369,89 @@ 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */, - 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */, + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */, + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 646EF5C9DE32F8354FD494A3815CC485 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C6BB2DBE34F4A06BC55B4E1F1B4E7C2E /* Debug */, + 11D90D0DB17AF403CABECBA81E0DE102 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6CF589DB62C0EF271D96AC18D22D3DBB /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 11CB0ED49FBDDE6BA958A0BCA77C2DB0 /* Debug */, + 8B8F8BE7E6867B0CEA55C0782C52791F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 78CDF8360D2FA9D6987965990D01AD42 /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE6093AEFF1DDB7071B08671B4DB4A98 /* Debug */, + E91BA6B59BFF567D6DBB30D38A3E5BA0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 78F0A275F3CA485BE85738AA08062CD3 /* Build configuration list for PBXNativeTarget "YYModel-YYModel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1F13183FA3C927398C50AEBB4CB89170 /* Debug */, + 48EC0DF63F09F7CFF8E98231833AA714 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9C3878B7315EA1127A0BC4034713970E /* Build configuration list for PBXNativeTarget "FMDB-FMDB" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0CF044B2734739D7487F60DD1B6D7854 /* Debug */, + BDCA447B837BCF5E04034FBF7809874D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 87E096D45C37DAAA1D2364CAC85AE0C1 /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoTests" */ = { + A258B53318D941535C52584E686693AA /* Build configuration list for PBXAggregateTarget "MapxusComponentKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1CBE026FCB306312BC735A09540C99DF /* Debug */, - 38CCE53C47CE4CA507057C90B84169AB /* Release */, + 66D873437B02CBD0D0475E204AC6274A /* Debug */, + CB9F1C342E2C94DBB6E9F6A92848C0F6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CEC4A4D479D1F3C3021E42D05B0EDD44 /* Build configuration list for PBXNativeTarget "FMDB" */ = { + A97A64590F284B4FAC7A91773F2D5CD5 /* Build configuration list for PBXNativeTarget "FMDB" */ = { isa = XCConfigurationList; buildConfigurations = ( - A6869057E1D18A775A29ACDF063E071D /* Debug */, - 7D739AC43A36CD3B68BEDC3B9DFA3B35 /* Release */, + 9849E9940F0E56966E0573DB5C2F0AA0 /* Debug */, + 7414A37D7A67297B6B2A88DE09480791 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EE91476FFEA2C3B3AB024E94672BCFF2 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { + CB0C0932CD7987385725516FE1096C63 /* Build configuration list for PBXAggregateTarget "MapxusRenderSDK" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5E472B313AAA528C22C1BF1D61D97C44 /* Debug */, - F0E0DE99D8C9C7D10672428D98A470BF /* Release */, + 0E6E133C6E9E966654D1FF01CA0B6C7B /* Debug */, + A91A70F32CC255486ED3ED1A912921AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F80060BB493B57BDAC2093D4FE90F8AA /* Build configuration list for PBXNativeTarget "Pods-LLDebugToolDemoUITests" */ = { + FDB235B9E93BFCD841FEBC6D09018BF0 /* Build configuration list for PBXNativeTarget "AFNetworking-AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9B2AFF354556003FE8A19356D062E45B /* Debug */, - D54B21B058E22EE59BDACEDFC2887054 /* Release */, + 4E4B020EE65CED4DF5B6BAE193083FFD /* Debug */, + 5AF2CA97498CB5CFE93334B3FA05FED7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch b/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch index e72247a9..beb2a244 100644 --- a/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch +++ b/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch @@ -10,14 +10,3 @@ #endif #endif -#ifndef TARGET_OS_IOS - #define TARGET_OS_IOS TARGET_OS_IPHONE -#endif - -#ifndef TARGET_OS_WATCH - #define TARGET_OS_WATCH 0 -#endif - -#ifndef TARGET_OS_TV - #define TARGET_OS_TV 0 -#endif diff --git a/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig b/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig deleted file mode 100644 index 9af64af7..00000000 --- a/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/AFNetworking -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/FMDB/FMDB.xcconfig b/Pods/Target Support Files/FMDB/FMDB.xcconfig deleted file mode 100644 index f10cb31c..00000000 --- a/Pods/Target Support Files/FMDB/FMDB.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FMDB -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FMDB" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FMDB" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/FMDB -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.markdown b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.markdown index 463b0a7f..adecacd6 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.markdown @@ -3,7 +3,7 @@ This application makes use of the following third party libraries: ## AFNetworking -Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) +Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -54,4 +54,117 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +## MapxusBaseSDK + +BSD 3-Clause License + +Copyright (c) 2021, Mapxus Technology Holding Limited + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +- Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +## MapxusComponentKit + +BSD 3-Clause License + +Copyright (c) 2021, Mapxus Technology Holding Limited + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +- Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +## MapxusMapSDK + +BSD 3-Clause License + +Copyright (c) 2021, Mapxus Technology Holding Limited + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +- Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +## YYModel + +The MIT License (MIT) + +Copyright (c) 2015 ibireme + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.plist b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.plist index 5d19bedc..16a2ac63 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-acknowledgements.plist @@ -14,7 +14,7 @@ FooterText - Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) + Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -78,6 +78,143 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + BSD 3-Clause License + +Copyright (c) 2021, Mapxus Technology Holding Limited + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +- Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + License + BSD 3-Clause + Title + MapxusBaseSDK + Type + PSGroupSpecifier + + + FooterText + BSD 3-Clause License + +Copyright (c) 2021, Mapxus Technology Holding Limited + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +- Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + License + BSD 3-Clause + Title + MapxusComponentKit + Type + PSGroupSpecifier + + + FooterText + BSD 3-Clause License + +Copyright (c) 2021, Mapxus Technology Holding Limited + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. +- Neither the name of the copyright holder nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + License + BSD 3-Clause + Title + MapxusMapSDK + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2015 ibireme <ibireme@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + License + MIT + Title + YYModel + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-frameworks.sh b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-frameworks.sh index 08e3eaac..16686d13 100755 --- a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-frameworks.sh +++ b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-frameworks.sh @@ -3,20 +3,24 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +BCSYMBOLMAP_DIR="BCSymbolMaps" -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html @@ -36,19 +40,34 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink -f "${source}")" + fi + + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do + echo "Installing $f" + install_bcsymbolmap "$f" "$destination" + rm "$f" + done + rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +81,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -70,77 +89,110 @@ install_framework() done fi } - # Copies and strips a vendored dSYM install_dsym() { local source="$1" + warn_missing_arch=${2:-true} if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. + # Copy the dSYM into the targets temp dir. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + basename="$(basename -s .dSYM "$source")" + binary_name="$(ls "$source/Contents/Resources/DWARF")" + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" + # Strip invalid architectures from the dSYM. + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + mkdir -p "${DWARF_DSYM_FOLDER_PATH}" + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 # Strip invalid architectures strip_invalid_archs() { binary="$1" + warn_missing_arch=${2:-true} # Get architectures for current target binary binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" # Intersect them with the architectures we are building for intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" # If there are no archs supported by this binary then warn the user if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 + if [[ "$warn_missing_arch" == "true" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + fi + STRIP_BINARY_RETVAL=1 return fi stripped="" for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi - STRIP_BINARY_RETVAL=1 + STRIP_BINARY_RETVAL=0 +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" } +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework" + install_framework "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK/MapxusBaseSDK.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit/MapxusComponentKit.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK/MapxusMapSDK.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK/Mapbox.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework" + install_framework "${BUILT_PRODUCTS_DIR}/YYModel/YYModel.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK/MapxusBaseSDK.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit/MapxusComponentKit.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK/MapxusMapSDK.framework" + install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK/Mapbox.framework" +fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-resources.sh b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-resources.sh deleted file mode 100755 index 345301f2..00000000 --- a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.debug.xcconfig b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.debug.xcconfig index 6881a012..333d17b2 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.debug.xcconfig +++ b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.debug.xcconfig @@ -1,10 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/MapxusBaseSDK/dynamic" "${PODS_ROOT}/MapxusComponentKit/dynamic" "${PODS_ROOT}/MapxusMapSDK/dynamic" "${PODS_ROOT}/MapxusRenderSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"sqlite3" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" +OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "AFNetworking" -framework "CoreFoundation" -framework "FMDB" -framework "Foundation" -framework "Mapbox" -framework "MapxusBaseSDK" -framework "MapxusComponentKit" -framework "MapxusMapSDK" -framework "YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.release.xcconfig b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.release.xcconfig index 6881a012..333d17b2 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.release.xcconfig +++ b/Pods/Target Support Files/Pods-LLDebugToolDemo/Pods-LLDebugToolDemo.release.xcconfig @@ -1,10 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/MapxusBaseSDK/dynamic" "${PODS_ROOT}/MapxusComponentKit/dynamic" "${PODS_ROOT}/MapxusMapSDK/dynamic" "${PODS_ROOT}/MapxusRenderSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AFNetworking" -l"FMDB" -l"sqlite3" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" +OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "AFNetworking" -framework "CoreFoundation" -framework "FMDB" -framework "Foundation" -framework "Mapbox" -framework "MapxusBaseSDK" -framework "MapxusComponentKit" -framework "MapxusMapSDK" -framework "YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.markdown index 463b0a7f..c5269538 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.markdown @@ -3,7 +3,7 @@ This application makes use of the following third party libraries: ## AFNetworking -Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) +Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.plist b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.plist index 5d19bedc..c39684aa 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-acknowledgements.plist @@ -14,7 +14,7 @@ FooterText - Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) + Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-frameworks.sh b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-frameworks.sh index 08e3eaac..c72114d3 100755 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-frameworks.sh @@ -3,20 +3,24 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +BCSYMBOLMAP_DIR="BCSymbolMaps" -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html @@ -36,19 +40,34 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink -f "${source}")" + fi + + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do + echo "Installing $f" + install_bcsymbolmap "$f" "$destination" + rm "$f" + done + rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +81,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -70,77 +89,100 @@ install_framework() done fi } - # Copies and strips a vendored dSYM install_dsym() { local source="$1" + warn_missing_arch=${2:-true} if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. + # Copy the dSYM into the targets temp dir. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + basename="$(basename -s .dSYM "$source")" + binary_name="$(ls "$source/Contents/Resources/DWARF")" + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" + # Strip invalid architectures from the dSYM. + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + mkdir -p "${DWARF_DSYM_FOLDER_PATH}" + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 # Strip invalid architectures strip_invalid_archs() { binary="$1" + warn_missing_arch=${2:-true} # Get architectures for current target binary binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" # Intersect them with the architectures we are building for intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" # If there are no archs supported by this binary then warn the user if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 + if [[ "$warn_missing_arch" == "true" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + fi + STRIP_BINARY_RETVAL=1 return fi stripped="" for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi - STRIP_BINARY_RETVAL=1 + STRIP_BINARY_RETVAL=0 +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" } +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework" +fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-resources.sh b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-resources.sh deleted file mode 100755 index 345301f2..00000000 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.debug.xcconfig b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.debug.xcconfig index 728f2911..333d17b2 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.debug.xcconfig @@ -1,9 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/MapxusBaseSDK/dynamic" "${PODS_ROOT}/MapxusComponentKit/dynamic" "${PODS_ROOT}/MapxusMapSDK/dynamic" "${PODS_ROOT}/MapxusRenderSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_LDFLAGS = $(inherited) -ObjC -l"sqlite3" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" +OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "AFNetworking" -framework "CoreFoundation" -framework "FMDB" -framework "Foundation" -framework "Mapbox" -framework "MapxusBaseSDK" -framework "MapxusComponentKit" -framework "MapxusMapSDK" -framework "YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.release.xcconfig b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.release.xcconfig index 728f2911..333d17b2 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoTests/Pods-LLDebugToolDemoTests.release.xcconfig @@ -1,9 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/MapxusBaseSDK/dynamic" "${PODS_ROOT}/MapxusComponentKit/dynamic" "${PODS_ROOT}/MapxusMapSDK/dynamic" "${PODS_ROOT}/MapxusRenderSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_LDFLAGS = $(inherited) -ObjC -l"sqlite3" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" +OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "AFNetworking" -framework "CoreFoundation" -framework "FMDB" -framework "Foundation" -framework "Mapbox" -framework "MapxusBaseSDK" -framework "MapxusComponentKit" -framework "MapxusMapSDK" -framework "YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.markdown b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.markdown index 463b0a7f..c5269538 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.markdown @@ -3,7 +3,7 @@ This application makes use of the following third party libraries: ## AFNetworking -Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) +Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.plist b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.plist index 5d19bedc..c39684aa 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-acknowledgements.plist @@ -14,7 +14,7 @@ FooterText - Copyright (c) 2011-2016 Alamofire Software Foundation (http://alamofire.org/) + Copyright (c) 2011-2020 Alamofire Software Foundation (http://alamofire.org/) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-frameworks.sh b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-frameworks.sh index 08e3eaac..c72114d3 100755 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-frameworks.sh +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-frameworks.sh @@ -3,20 +3,24 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +SWIFT_STDLIB_PATH="${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +BCSYMBOLMAP_DIR="BCSymbolMaps" -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html @@ -36,19 +40,34 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink -f "${source}")" + fi + + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do + echo "Installing $f" + install_bcsymbolmap "$f" "$destination" + rm "$f" + done + rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -62,7 +81,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -70,77 +89,100 @@ install_framework() done fi } - # Copies and strips a vendored dSYM install_dsym() { local source="$1" + warn_missing_arch=${2:-true} if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. + # Copy the dSYM into the targets temp dir. echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + basename="$(basename -s .dSYM "$source")" + binary_name="$(ls "$source/Contents/Resources/DWARF")" + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" + # Strip invalid architectures from the dSYM. + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + mkdir -p "${DWARF_DSYM_FOLDER_PATH}" + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 # Strip invalid architectures strip_invalid_archs() { binary="$1" + warn_missing_arch=${2:-true} # Get architectures for current target binary binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" # Intersect them with the architectures we are building for intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" # If there are no archs supported by this binary then warn the user if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 + if [[ "$warn_missing_arch" == "true" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + fi + STRIP_BINARY_RETVAL=1 return fi stripped="" for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi - STRIP_BINARY_RETVAL=1 + STRIP_BINARY_RETVAL=0 +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" } +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework" +fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-resources.sh b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-resources.sh deleted file mode 100755 index 345301f2..00000000 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.debug.xcconfig b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.debug.xcconfig index 728f2911..333d17b2 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.debug.xcconfig @@ -1,9 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/MapxusBaseSDK/dynamic" "${PODS_ROOT}/MapxusComponentKit/dynamic" "${PODS_ROOT}/MapxusMapSDK/dynamic" "${PODS_ROOT}/MapxusRenderSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_LDFLAGS = $(inherited) -ObjC -l"sqlite3" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" +OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "AFNetworking" -framework "CoreFoundation" -framework "FMDB" -framework "Foundation" -framework "Mapbox" -framework "MapxusBaseSDK" -framework "MapxusComponentKit" -framework "MapxusMapSDK" -framework "YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.release.xcconfig b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.release.xcconfig index 728f2911..333d17b2 100644 --- a/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.release.xcconfig +++ b/Pods/Target Support Files/Pods-LLDebugToolDemoUITests/Pods-LLDebugToolDemoUITests.release.xcconfig @@ -1,9 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_ROOT}/MapxusBaseSDK/dynamic" "${PODS_ROOT}/MapxusComponentKit/dynamic" "${PODS_ROOT}/MapxusMapSDK/dynamic" "${PODS_ROOT}/MapxusRenderSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusBaseSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusComponentKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusMapSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapxusRenderSDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FMDB" -OTHER_LDFLAGS = $(inherited) -ObjC -l"sqlite3" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FMDB/FMDB.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FMDB" +OTHER_LDFLAGS = $(inherited) -l"sqlite3" -framework "AFNetworking" -framework "CoreFoundation" -framework "FMDB" -framework "Foundation" -framework "Mapbox" -framework "MapxusBaseSDK" -framework "MapxusComponentKit" -framework "MapxusMapSDK" -framework "YYModel" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES