增加iOS banner
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/ATOfferFeedBackView.nib
generated
Executable file → Normal file
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/at_banner_close.png
Executable file → Normal file
|
Before Width: | Height: | Size: 886 B After Width: | Height: | Size: 886 B |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/at_ctaMask.png
Executable file → Normal file
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/at_topon_ad_cn.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/at_topon_ad_en.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/at_topon_logo.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/at_topon_sdk_logo.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/brand-logo.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/feedback_close@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_close.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_loading.png
Executable file → Normal file
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_refresh.png
Executable file → Normal file
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_video_play.png
Executable file → Normal file
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_close@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_close@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_close_hl@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 563 B After Width: | Height: | Size: 563 B |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_close_normal@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 587 B |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_forward@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_forward@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_forward_hl@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_goback@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_goback@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_goback_hl@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_refresh@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_refresh@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/icon_webview_refresh_hl@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_close@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_close@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_semi_star.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_semi_star@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_semi_star@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_star_off.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_star_off@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_star_off@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_star_on.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_star_on@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_banner_star_on@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_close_btn.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_close_btn@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_close_btn@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_cta_btn_bg.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_cta_btn_bg@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_cta_btn_bg@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_semi_star.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_semi_star@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_semi_star@3x .png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_star_off.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_star_off@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_star_off@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_star_on.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_star_on@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/native_splash_star_on@3x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/offer_video_close.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/offer_video_close_half.png
Executable file → Normal file
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/offer_voice_muted.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/offer_voice_muted_half.png
Executable file → Normal file
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/offer_voice_unmuted.png
Executable file → Normal file
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/offer_voice_unmuted_half.png
Executable file → Normal file
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/splash_cta_btn_bg.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/tencentlogo79.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/video_player_demute.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/AnyThinkSDK.bundle/video_player_mute.png
Executable file → Normal file
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/Headers/AdmobBannerDelegate.h
Executable file → Normal file
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/Headers/AdmobBannerManager.h
Executable file → Normal file
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/Headers/AdmobBannerView.h
Executable file → Normal file
|
|
@ -1,5 +0,0 @@
|
|||
#import "FMDatabase.h"
|
||||
#import "FMResultSet.h"
|
||||
#import "FMDatabaseAdditions.h"
|
||||
#import "FMDatabaseQueue.h"
|
||||
#import "FMDatabasePool.h"
|
||||
|
|
@ -1,267 +0,0 @@
|
|||
//
|
||||
// FMDatabaseAdditions.h
|
||||
// fmdb
|
||||
//
|
||||
// Created by August Mueller on 10/30/05.
|
||||
// Copyright 2005 Flying Meat Inc.. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "FMDatabase.h"
|
||||
|
||||
|
||||
/** Category of additions for `<FMDatabase>` class.
|
||||
|
||||
### See also
|
||||
|
||||
- `<FMDatabase>`
|
||||
*/
|
||||
|
||||
@interface FMDatabase (FMDatabaseAdditions)
|
||||
|
||||
///----------------------------------------
|
||||
/// @name Return results of SQL to variable
|
||||
///----------------------------------------
|
||||
|
||||
/** Return `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.
|
||||
|
||||
@return `int` value.
|
||||
*/
|
||||
|
||||
- (int)intForQuery:(NSString*)query, ...;
|
||||
|
||||
/** Return `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.
|
||||
|
||||
@return `long` value.
|
||||
*/
|
||||
|
||||
- (long)longForQuery:(NSString*)query, ...;
|
||||
|
||||
/** 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.
|
||||
|
||||
@return `BOOL` value.
|
||||
*/
|
||||
|
||||
- (BOOL)boolForQuery:(NSString*)query, ...;
|
||||
|
||||
/** 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.
|
||||
|
||||
@return `double` value.
|
||||
*/
|
||||
|
||||
- (double)doubleForQuery:(NSString*)query, ...;
|
||||
|
||||
/** Return `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.
|
||||
|
||||
@return `NSString` value.
|
||||
*/
|
||||
|
||||
- (NSString*)stringForQuery:(NSString*)query, ...;
|
||||
|
||||
/** Return `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.
|
||||
|
||||
@return `NSData` value.
|
||||
*/
|
||||
|
||||
- (NSData*)dataForQuery:(NSString*)query, ...;
|
||||
|
||||
/** Return `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.
|
||||
|
||||
@return `NSDate` value.
|
||||
*/
|
||||
|
||||
- (NSDate*)dateForQuery:(NSString*)query, ...;
|
||||
|
||||
|
||||
// Notice that there's no dataNoCopyForQuery:.
|
||||
// That would be a bad idea, because we close out the result set, and then what
|
||||
// happens to the data that we just didn't copy? Who knows, not I.
|
||||
|
||||
|
||||
///--------------------------------
|
||||
/// @name Schema related operations
|
||||
///--------------------------------
|
||||
|
||||
/** Does table exist in database?
|
||||
|
||||
@param tableName The name of the table being looked for.
|
||||
|
||||
@return `YES` if table found; `NO` if not found.
|
||||
*/
|
||||
|
||||
- (BOOL)tableExists:(NSString*)tableName;
|
||||
|
||||
/** The schema of the database.
|
||||
|
||||
This will be the schema for the entire database. For each entity, each row of the result set will include the following fields:
|
||||
|
||||
- `type` - The type of entity (e.g. table, index, view, or trigger)
|
||||
- `name` - The name of the object
|
||||
- `tbl_name` - The name of the table to which the object references
|
||||
- `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.
|
||||
|
||||
@see [SQLite File Format](http://www.sqlite.org/fileformat.html)
|
||||
*/
|
||||
|
||||
- (FMResultSet*)getSchema;
|
||||
|
||||
/** The schema of the database.
|
||||
|
||||
This will be the schema for a particular table as report by SQLite `PRAGMA`, for example:
|
||||
|
||||
PRAGMA table_info('employees')
|
||||
|
||||
This will report:
|
||||
|
||||
- `cid` - The column ID number
|
||||
- `name` - The name of the column
|
||||
- `type` - The data type specified for the column
|
||||
- `notnull` - whether the field is defined as NOT NULL (i.e. values required)
|
||||
- `dflt_value` - The default value for the column
|
||||
- `pk` - Whether the field is part of the primary key of the table
|
||||
|
||||
@param tableName The name of the table for whom the schema will be returned.
|
||||
|
||||
@return `FMResultSet` of schema; `nil` on error.
|
||||
|
||||
@see [table_info](http://www.sqlite.org/pragma.html#pragma_table_info)
|
||||
*/
|
||||
|
||||
- (FMResultSet*)getTableSchema:(NSString*)tableName;
|
||||
|
||||
/** Test to see if particular column exists for particular table in database
|
||||
|
||||
@param columnName The name of the column.
|
||||
|
||||
@param tableName The name of the table.
|
||||
|
||||
@return `YES` if column exists in table in question; `NO` otherwise.
|
||||
*/
|
||||
|
||||
- (BOOL)columnExists:(NSString*)columnName inTableWithName:(NSString*)tableName;
|
||||
|
||||
/** Test to see if particular column exists for particular table in database
|
||||
|
||||
@param columnName The name of the column.
|
||||
|
||||
@param tableName The name of the table.
|
||||
|
||||
@return `YES` if column exists in table in question; `NO` otherwise.
|
||||
|
||||
@see columnExists:inTableWithName:
|
||||
|
||||
@warning Deprecated - use `<columnExists:inTableWithName:>` instead.
|
||||
*/
|
||||
|
||||
- (BOOL)columnExists:(NSString*)tableName columnName:(NSString*)columnName __attribute__ ((deprecated));
|
||||
|
||||
|
||||
/** Validate SQL statement
|
||||
|
||||
This validates SQL statement by performing `sqlite3_prepare_v2`, but not returning the results, but instead immediately calling `sqlite3_finalize`.
|
||||
|
||||
@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.
|
||||
|
||||
@return `YES` if validation succeeded without incident; `NO` otherwise.
|
||||
|
||||
*/
|
||||
|
||||
- (BOOL)validateSQL:(NSString*)sql error:(NSError**)error;
|
||||
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3007017
|
||||
|
||||
///-----------------------------------
|
||||
/// @name Application identifier tasks
|
||||
///-----------------------------------
|
||||
|
||||
/** Retrieve application ID
|
||||
|
||||
@return The `uint32_t` numeric value of the application ID.
|
||||
|
||||
@see setApplicationID:
|
||||
*/
|
||||
|
||||
- (uint32_t)applicationID;
|
||||
|
||||
/** Set the application ID
|
||||
|
||||
@param appID The `uint32_t` numeric value of the application ID.
|
||||
|
||||
@see applicationID
|
||||
*/
|
||||
|
||||
- (void)setApplicationID:(uint32_t)appID;
|
||||
|
||||
#if TARGET_OS_MAC && !TARGET_OS_IPHONE
|
||||
/** Retrieve application ID string
|
||||
|
||||
@return The `NSString` value of the application ID.
|
||||
|
||||
@see setApplicationIDString:
|
||||
*/
|
||||
|
||||
|
||||
- (NSString*)applicationIDString;
|
||||
|
||||
/** Set the application ID string
|
||||
|
||||
@param string The `NSString` value of the application ID.
|
||||
|
||||
@see applicationIDString
|
||||
*/
|
||||
|
||||
- (void)setApplicationIDString:(NSString*)string;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
///-----------------------------------
|
||||
/// @name user version identifier tasks
|
||||
///-----------------------------------
|
||||
|
||||
/** Retrieve user version
|
||||
|
||||
@return The `uint32_t` numeric value of the user version.
|
||||
|
||||
@see setUserVersion:
|
||||
*/
|
||||
|
||||
- (uint32_t)userVersion;
|
||||
|
||||
/** Set the user-version
|
||||
|
||||
@param version The `uint32_t` numeric value of the user version.
|
||||
|
||||
@see userVersion
|
||||
*/
|
||||
|
||||
- (void)setUserVersion:(uint32_t)version;
|
||||
|
||||
@end
|
||||
|
|
@ -1,204 +0,0 @@
|
|||
//
|
||||
// FMDatabasePool.h
|
||||
// fmdb
|
||||
//
|
||||
// Created by August Mueller on 6/22/11.
|
||||
// Copyright 2011 Flying Meat Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "sqlite3.h"
|
||||
|
||||
@class FMDatabase;
|
||||
|
||||
/** Pool of `<FMDatabase>` objects.
|
||||
|
||||
### See also
|
||||
|
||||
- `<FMDatabaseQueue>`
|
||||
- `<FMDatabase>`
|
||||
|
||||
@warning Before using `FMDatabasePool`, please consider using `<FMDatabaseQueue>` instead.
|
||||
|
||||
If you really really really know what you're doing and `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!
|
||||
|
||||
For an example on deadlocking, search for:
|
||||
`ONLY_USE_THE_POOL_IF_YOU_ARE_DOING_READS_OTHERWISE_YOULL_DEADLOCK_USE_FMDATABASEQUEUE_INSTEAD`
|
||||
in the main.m file.
|
||||
*/
|
||||
|
||||
@interface FMDatabasePool : NSObject {
|
||||
NSString *_path;
|
||||
|
||||
dispatch_queue_t _lockQueue;
|
||||
|
||||
NSMutableArray *_databaseInPool;
|
||||
NSMutableArray *_databaseOutPool;
|
||||
|
||||
__unsafe_unretained id _delegate;
|
||||
|
||||
NSUInteger _maximumNumberOfDatabasesToCreate;
|
||||
int _openFlags;
|
||||
}
|
||||
|
||||
/** Database path */
|
||||
|
||||
@property (atomic, retain) NSString *path;
|
||||
|
||||
/** Delegate object */
|
||||
|
||||
@property (atomic, assign) id delegate;
|
||||
|
||||
/** Maximum number of databases to create */
|
||||
|
||||
@property (atomic, assign) NSUInteger maximumNumberOfDatabasesToCreate;
|
||||
|
||||
/** Open flags */
|
||||
|
||||
@property (atomic, readonly) int openFlags;
|
||||
|
||||
|
||||
///---------------------
|
||||
/// @name Initialization
|
||||
///---------------------
|
||||
|
||||
/** Create pool using path.
|
||||
|
||||
@param aPath The file path of the database.
|
||||
|
||||
@return The `FMDatabasePool` object. `nil` on error.
|
||||
*/
|
||||
|
||||
+ (instancetype)databasePoolWithPath:(NSString*)aPath;
|
||||
|
||||
/** Create pool using path and specified flags
|
||||
|
||||
@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.
|
||||
*/
|
||||
|
||||
+ (instancetype)databasePoolWithPath:(NSString*)aPath flags:(int)openFlags;
|
||||
|
||||
/** Create pool using path.
|
||||
|
||||
@param aPath The file path of the database.
|
||||
|
||||
@return The `FMDatabasePool` object. `nil` on error.
|
||||
*/
|
||||
|
||||
- (instancetype)initWithPath:(NSString*)aPath;
|
||||
|
||||
/** Create pool using path and specified flags.
|
||||
|
||||
@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.
|
||||
*/
|
||||
|
||||
- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags;
|
||||
|
||||
///------------------------------------------------
|
||||
/// @name Keeping track of checked in/out databases
|
||||
///------------------------------------------------
|
||||
|
||||
/** Number of checked-in databases in pool
|
||||
|
||||
@returns Number of databases
|
||||
*/
|
||||
|
||||
- (NSUInteger)countOfCheckedInDatabases;
|
||||
|
||||
/** Number of checked-out databases in pool
|
||||
|
||||
@returns Number of databases
|
||||
*/
|
||||
|
||||
- (NSUInteger)countOfCheckedOutDatabases;
|
||||
|
||||
/** Total number of databases in pool
|
||||
|
||||
@returns Number of databases
|
||||
*/
|
||||
|
||||
- (NSUInteger)countOfOpenDatabases;
|
||||
|
||||
/** Release all databases in pool */
|
||||
|
||||
- (void)releaseAllDatabases;
|
||||
|
||||
///------------------------------------------
|
||||
/// @name Perform database operations in pool
|
||||
///------------------------------------------
|
||||
|
||||
/** Synchronously perform database operations in pool.
|
||||
|
||||
@param block The code to be run on the `FMDatabasePool` pool.
|
||||
*/
|
||||
|
||||
- (void)inDatabase:(void (^)(FMDatabase *db))block;
|
||||
|
||||
/** Synchronously perform database operations in pool using transaction.
|
||||
|
||||
@param block The code to be run on the `FMDatabasePool` pool.
|
||||
*/
|
||||
|
||||
- (void)inTransaction:(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.
|
||||
*/
|
||||
|
||||
- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block;
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3007000
|
||||
|
||||
/** Synchronously perform database operations in pool using save point.
|
||||
|
||||
@param block The code to be run on the `FMDatabasePool` pool.
|
||||
|
||||
@return `NSError` object if error; `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.
|
||||
*/
|
||||
|
||||
- (NSError*)inSavePoint:(void (^)(FMDatabase *db, BOOL *rollback))block;
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/** FMDatabasePool delegate category
|
||||
|
||||
This is a category that defines the protocol for the FMDatabasePool delegate
|
||||
*/
|
||||
|
||||
@interface NSObject (FMDatabasePoolDelegate)
|
||||
|
||||
/** Asks the delegate whether database should be added to the pool.
|
||||
|
||||
@param pool The `FMDatabasePool` object.
|
||||
@param database The `FMDatabase` object.
|
||||
|
||||
@return `YES` if it should add database to pool; `NO` if not.
|
||||
|
||||
*/
|
||||
|
||||
- (BOOL)databasePool:(FMDatabasePool*)pool shouldAddDatabaseToPool:(FMDatabase*)database;
|
||||
|
||||
/** Tells the delegate that database was added to the pool.
|
||||
|
||||
@param pool The `FMDatabasePool` object.
|
||||
@param database The `FMDatabase` object.
|
||||
|
||||
*/
|
||||
|
||||
- (void)databasePool:(FMDatabasePool*)pool didAddDatabase:(FMDatabase*)database;
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -1,174 +0,0 @@
|
|||
//
|
||||
// FMDatabaseQueue.h
|
||||
// fmdb
|
||||
//
|
||||
// Created by August Mueller on 6/22/11.
|
||||
// Copyright 2011 Flying Meat Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "sqlite3.h"
|
||||
|
||||
@class FMDatabase;
|
||||
|
||||
/** To perform queries and updates on multiple threads, you'll want to use `FMDatabaseQueue`.
|
||||
|
||||
Using a single instance of `<FMDatabase>` from multiple threads at once is a bad idea. It has always been OK to make a `<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:
|
||||
|
||||
First, make your queue.
|
||||
|
||||
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath];
|
||||
|
||||
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]];
|
||||
|
||||
FMResultSet *rs = [db executeQuery:@"select * from foo"];
|
||||
while ([rs next]) {
|
||||
//…
|
||||
}
|
||||
}];
|
||||
|
||||
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]];
|
||||
|
||||
if (whoopsSomethingWrongHappened) {
|
||||
*rollback = YES;
|
||||
return;
|
||||
}
|
||||
// etc…
|
||||
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]];
|
||||
}];
|
||||
|
||||
`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.
|
||||
|
||||
### See also
|
||||
|
||||
- `<FMDatabase>`
|
||||
|
||||
@warning Do not instantiate a single `<FMDatabase>` object and use it across multiple threads. Use `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.
|
||||
|
||||
*/
|
||||
|
||||
@interface FMDatabaseQueue : NSObject {
|
||||
NSString *_path;
|
||||
dispatch_queue_t _queue;
|
||||
FMDatabase *_db;
|
||||
int _openFlags;
|
||||
}
|
||||
|
||||
/** Path of database */
|
||||
|
||||
@property (atomic, retain) NSString *path;
|
||||
|
||||
/** Open flags */
|
||||
|
||||
@property (atomic, readonly) int openFlags;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Initialization, opening, and closing of queue
|
||||
///----------------------------------------------------
|
||||
|
||||
/** Create queue using path.
|
||||
|
||||
@param aPath The file path of the database.
|
||||
|
||||
@return The `FMDatabaseQueue` object. `nil` on error.
|
||||
*/
|
||||
|
||||
+ (instancetype)databaseQueueWithPath:(NSString*)aPath;
|
||||
|
||||
/** Create queue using path and specified flags.
|
||||
|
||||
@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.
|
||||
*/
|
||||
+ (instancetype)databaseQueueWithPath:(NSString*)aPath flags:(int)openFlags;
|
||||
|
||||
/** Create queue using path.
|
||||
|
||||
@param aPath The file path of the database.
|
||||
|
||||
@return The `FMDatabaseQueue` object. `nil` on error.
|
||||
*/
|
||||
|
||||
- (instancetype)initWithPath:(NSString*)aPath;
|
||||
|
||||
/** Create queue using path and specified flags.
|
||||
|
||||
@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.
|
||||
*/
|
||||
|
||||
- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags;
|
||||
|
||||
/** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object.
|
||||
|
||||
Subclasses can override this method to return specified Class of 'FMDatabase' subclass.
|
||||
|
||||
@return The Class of 'FMDatabase' subclass, that will be used to instantiate database object.
|
||||
*/
|
||||
|
||||
+ (Class)databaseClass;
|
||||
|
||||
/** Close database used by queue. */
|
||||
|
||||
- (void)close;
|
||||
|
||||
///-----------------------------------------------
|
||||
/// @name Dispatching database operations to queue
|
||||
///-----------------------------------------------
|
||||
|
||||
/** Synchronously perform database operations on queue.
|
||||
|
||||
@param block The code to be run on the queue of `FMDatabaseQueue`
|
||||
*/
|
||||
|
||||
- (void)inDatabase:(void (^)(FMDatabase *db))block;
|
||||
|
||||
/** Synchronously perform database operations on queue, using transactions.
|
||||
|
||||
@param block The code to be run on the queue of `FMDatabaseQueue`
|
||||
*/
|
||||
|
||||
- (void)inTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block;
|
||||
|
||||
/** Synchronously perform database operations on queue, using deferred transactions.
|
||||
|
||||
@param block The code to be run on the queue of `FMDatabaseQueue`
|
||||
*/
|
||||
|
||||
- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block;
|
||||
|
||||
///-----------------------------------------------
|
||||
/// @name Dispatching database operations to queue
|
||||
///-----------------------------------------------
|
||||
|
||||
/** Synchronously perform database operations using save point.
|
||||
|
||||
@param block The code to be run on the queue of `FMDatabaseQueue`
|
||||
*/
|
||||
|
||||
#if SQLITE_VERSION_NUMBER >= 3007000
|
||||
// NOTE: 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's startSavePointWithName:error: instead.
|
||||
- (NSError*)inSavePoint:(void (^)(FMDatabase *db, BOOL *rollback))block;
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 866f4d7c779be4b21ba5cbd821a3b81e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,456 +0,0 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
#import "sqlite3.h"
|
||||
|
||||
#ifndef __has_feature // Optional.
|
||||
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
|
||||
#endif
|
||||
|
||||
#ifndef NS_RETURNS_NOT_RETAINED
|
||||
#if __has_feature(attribute_ns_returns_not_retained)
|
||||
#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
|
||||
#else
|
||||
#define NS_RETURNS_NOT_RETAINED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@class FMDatabase;
|
||||
@class JPCFMStatement;
|
||||
|
||||
/** Represents the results of executing a query on an `<FMDatabase>`.
|
||||
|
||||
### See also
|
||||
|
||||
- `<FMDatabase>`
|
||||
*/
|
||||
|
||||
@interface FMResultSet : NSObject {
|
||||
FMDatabase *_parentDB;
|
||||
JPCFMStatement *_statement;
|
||||
|
||||
NSString *_query;
|
||||
NSMutableDictionary *_columnNameToIndexMap;
|
||||
}
|
||||
|
||||
///-----------------
|
||||
/// @name Properties
|
||||
///-----------------
|
||||
|
||||
/** Executed query */
|
||||
|
||||
@property (atomic, retain) NSString *query;
|
||||
|
||||
/** `NSMutableDictionary` mapping column names to numeric index */
|
||||
|
||||
@property (readonly) NSMutableDictionary *columnNameToIndexMap;
|
||||
|
||||
/** `FMStatement` used by result set. */
|
||||
|
||||
@property (atomic, retain) JPCFMStatement *statement;
|
||||
|
||||
///------------------------------------
|
||||
/// @name Creating and closing database
|
||||
///------------------------------------
|
||||
|
||||
/** Create result set from `<FMStatement>`
|
||||
|
||||
@param statement A `<FMStatement>` to be performed
|
||||
|
||||
@param aDB A `<FMDatabase>` to be used
|
||||
|
||||
@return A `FMResultSet` on success; `nil` on failure
|
||||
*/
|
||||
|
||||
+ (instancetype)resultSetWithStatement:(JPCFMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;
|
||||
|
||||
/** Close result set */
|
||||
|
||||
- (void)close;
|
||||
|
||||
- (void)setParentDB:(FMDatabase *)newDb;
|
||||
|
||||
///---------------------------------------
|
||||
/// @name Iterating through the result set
|
||||
///---------------------------------------
|
||||
|
||||
/** Retrieve next row for result set.
|
||||
|
||||
You must always invoke `next` 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
|
||||
|
||||
@see hasAnotherRow
|
||||
*/
|
||||
|
||||
- (BOOL)next;
|
||||
|
||||
/** Did the last call to `<next>` succeed in retrieving another row?
|
||||
|
||||
@return `YES` if the last call to `<next>` succeeded in retrieving another record; `NO` if not.
|
||||
|
||||
@see next
|
||||
|
||||
@warning The `hasAnotherRow` method must follow a call to `<next>`. 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.
|
||||
*/
|
||||
|
||||
- (BOOL)hasAnotherRow;
|
||||
|
||||
///---------------------------------------------
|
||||
/// @name Retrieving information from result set
|
||||
///---------------------------------------------
|
||||
|
||||
/** How many columns in result set
|
||||
|
||||
@return Integer value of the number of columns.
|
||||
*/
|
||||
|
||||
- (int)columnCount;
|
||||
|
||||
/** Column index for column name
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return Zero-based index for column.
|
||||
*/
|
||||
|
||||
- (int)columnIndexForName:(NSString*)columnName;
|
||||
|
||||
/** Column name for column index
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return columnName `NSString` value of the name of the column.
|
||||
*/
|
||||
|
||||
- (NSString*)columnNameForIndex:(int)columnIdx;
|
||||
|
||||
/** Result set integer value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `int` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (int)intForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set integer value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `int` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (int)intForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `long` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `long` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (long)longForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set long value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `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.
|
||||
|
||||
@return `long long int` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (long long int)longLongIntForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `long long int` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `long long int` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (long long int)longLongIntForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `unsigned long long int` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `unsigned long long int` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (unsigned long long int)unsignedLongLongIntForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `unsigned long long int` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `unsigned long long int` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (unsigned long long int)unsignedLongLongIntForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `BOOL` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `BOOL` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (BOOL)boolForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `BOOL` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `BOOL` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (BOOL)boolForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `double` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `double` value of the result set's column.
|
||||
|
||||
*/
|
||||
|
||||
- (double)doubleForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `double` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `double` value of the result set's column.
|
||||
|
||||
*/
|
||||
|
||||
- (double)doubleForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `NSString` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `NSString` value of the result set's column.
|
||||
|
||||
*/
|
||||
|
||||
- (NSString*)stringForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `NSString` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `NSString` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (NSString*)stringForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `NSDate` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `NSDate` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (NSDate*)dateForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `NSDate` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `NSDate` value of the result set's column.
|
||||
|
||||
*/
|
||||
|
||||
- (NSDate*)dateForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `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.
|
||||
|
||||
@return `NSData` value of the result set's column.
|
||||
|
||||
*/
|
||||
|
||||
- (NSData*)dataForColumn:(NSString*)columnName;
|
||||
|
||||
/** Result set `NSData` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `NSData` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (NSData*)dataForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set `(const unsigned char *)` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `(const unsigned char *)` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName;
|
||||
|
||||
/** Result set `(const unsigned char *)` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `(const unsigned char *)` value of the result set's column.
|
||||
*/
|
||||
|
||||
- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** Result set object for column.
|
||||
|
||||
@param columnName `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.
|
||||
|
||||
@see objectForKeyedSubscript:
|
||||
*/
|
||||
|
||||
- (id)objectForColumnName:(NSString*)columnName;
|
||||
|
||||
/** 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.
|
||||
|
||||
@see objectAtIndexedSubscript:
|
||||
*/
|
||||
|
||||
- (id)objectForColumnIndex:(int)columnIdx;
|
||||
|
||||
/** 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"];
|
||||
|
||||
This simplified syntax is equivalent to calling:
|
||||
|
||||
id result = [rs objectForKeyedSubscript:@"employee_name"];
|
||||
|
||||
which is, it turns out, equivalent to calling:
|
||||
|
||||
id result = [rs objectForColumnName:@"employee_name"];
|
||||
|
||||
@param columnName `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.
|
||||
*/
|
||||
|
||||
- (id)objectForKeyedSubscript:(NSString *)columnName;
|
||||
|
||||
/** 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[0];
|
||||
|
||||
This simplified syntax is equivalent to calling:
|
||||
|
||||
id result = [rs objectForKeyedSubscript:0];
|
||||
|
||||
which is, it turns out, equivalent to calling:
|
||||
|
||||
id result = [rs objectForColumnName:0];
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.
|
||||
*/
|
||||
|
||||
- (id)objectAtIndexedSubscript:(int)columnIdx;
|
||||
|
||||
/** Result set `NSData` value for column.
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `NSData` value of the result set's column.
|
||||
|
||||
@warning If you are going to use this data after you iterate over the next row, or after you close the
|
||||
result set, make sure to make a copy of the data first (or just use `<dataForColumn:>`/`<dataForColumnIndex:>`)
|
||||
If you don't, you're going to be in a world of hurt when you try and use the data.
|
||||
|
||||
*/
|
||||
|
||||
- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;
|
||||
|
||||
/** Result set `NSData` value for column.
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `NSData` value of the result set's column.
|
||||
|
||||
@warning If you are going to use this data after you iterate over the next row, or after you close the
|
||||
result set, make sure to make a copy of the data first (or just use `<dataForColumn:>`/`<dataForColumnIndex:>`)
|
||||
If you don't, you're going to be in a world of hurt when you try and use the data.
|
||||
|
||||
*/
|
||||
|
||||
- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
|
||||
|
||||
/** Is the column `NULL`?
|
||||
|
||||
@param columnIdx Zero-based index for column.
|
||||
|
||||
@return `YES` if column is `NULL`; `NO` if not `NULL`.
|
||||
*/
|
||||
|
||||
- (BOOL)columnIndexIsNull:(int)columnIdx;
|
||||
|
||||
/** Is the column `NULL`?
|
||||
|
||||
@param columnName `NSString` value of the name of the column.
|
||||
|
||||
@return `YES` if column is `NULL`; `NO` if not `NULL`.
|
||||
*/
|
||||
|
||||
- (BOOL)columnIsNull:(NSString*)columnName;
|
||||
|
||||
|
||||
/** Returns a dictionary of the row results mapped to case sensitive keys of the column names.
|
||||
|
||||
@returns `NSDictionary` of the row results.
|
||||
|
||||
@warning The keys to the dictionary are case sensitive of the column names.
|
||||
*/
|
||||
|
||||
- (NSDictionary*)resultDictionary;
|
||||
|
||||
/** Returns a dictionary of the row results
|
||||
|
||||
@see resultDictionary
|
||||
|
||||
@warning **Deprecated**: Please use `<resultDictionary>` instead. Also, beware that `<resultDictionary>` is case sensitive!
|
||||
*/
|
||||
|
||||
- (NSDictionary*)resultDict __attribute__ ((deprecated));
|
||||
|
||||
///-----------------------------
|
||||
/// @name Key value coding magic
|
||||
///-----------------------------
|
||||
|
||||
/** Performs `setValue` to yield support for key value observing.
|
||||
|
||||
@param object The object for which the values will be set. This is the key-value-coding compliant object that you might, for example, observe.
|
||||
|
||||
*/
|
||||
|
||||
- (void)kvcMagic:(id)object;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f383a74ab258848508a92f695eed6649
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
0
popcorn/Assets/JoyPacSDK/JoyPacAd/JoyPacAd/Plugins/iOS/JPSDK/JPSDK.framework/Headers/JPCDataReportDelegate.h
Executable file → Normal file
|
|
@ -6,13 +6,13 @@
|
|||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "AFNetworking.h"
|
||||
#import "JPAFNetworking.h"
|
||||
|
||||
|
||||
|
||||
@interface JPCHTTPSessionManager : NSObject
|
||||
|
||||
@property (nonatomic,strong)AFHTTPSessionManager * _Nullable manager;
|
||||
@property (nonatomic,strong)JPAFHTTPSessionManager * _Nullable manager;
|
||||
|
||||
+ (JPCHTTPSessionManager *_Nullable)manager;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2fbc3cb63ef0349d9ac58c90afeb4a7d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#import "JPCAdvertUtils.h"
|
||||
#import "JPCRecordClass.h"
|
||||
#import "JSONSerialization.h"
|
||||
#import "JoypacJSONSerialization.h"
|
||||
#import "JPCSearchManager.h"
|
||||
#import "NSDate+JPCDate.h"
|
||||
#import "JPCDataReportManager.h"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface JSONSerialization : NSObject
|
||||
@interface JoypacJSONSerialization : NSObject
|
||||
|
||||
//临时供豆腐测试adjust方法
|
||||
+ (NSString *)toJsonStringWithDict:(NSDictionary *)dic;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9024e754db2b24e049608a1dabf90d42
|
||||
guid: 2c7038d546ed149159d70094d3f53c47
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
//
|
||||
// MJExtension.h
|
||||
// MJExtension
|
||||
//
|
||||
// Created by mj on 14-1-15.
|
||||
// Copyright (c) 2014年 小码哥. All rights reserved.
|
||||
// 代码地址:https://github.com/CoderMJLee/MJExtension
|
||||
// 代码地址:http://code4app.com/ios/%E5%AD%97%E5%85%B8-JSON-%E4%B8%8E%E6%A8%A1%E5%9E%8B%E7%9A%84%E8%BD%AC%E6%8D%A2/5339992a933bf062608b4c57
|
||||
|
||||
#import "NSObject+MJCoding.h"
|
||||
#import "NSObject+MJProperty.h"
|
||||
#import "NSObject+MJClass.h"
|
||||
#import "NSObject+MJKeyValue.h"
|
||||
#import "NSString+MJExtension.h"
|
||||
#import "MJExtensionConst.h"
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bfd40d753c4784a1ebefdfc04cf7a8bd
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
|
||||
#ifndef __MJExtensionConst__H__
|
||||
#define __MJExtensionConst__H__
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#ifndef MJ_LOCK
|
||||
#define MJ_LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER);
|
||||
#endif
|
||||
|
||||
#ifndef MJ_UNLOCK
|
||||
#define MJ_UNLOCK(lock) dispatch_semaphore_signal(lock);
|
||||
#endif
|
||||
|
||||
// 信号量
|
||||
#define MJExtensionSemaphoreCreate \
|
||||
static dispatch_semaphore_t signalSemaphore; \
|
||||
static dispatch_once_t onceTokenSemaphore; \
|
||||
dispatch_once(&onceTokenSemaphore, ^{ \
|
||||
signalSemaphore = dispatch_semaphore_create(1); \
|
||||
});
|
||||
|
||||
#define MJExtensionSemaphoreWait MJ_LOCK(signalSemaphore)
|
||||
#define MJExtensionSemaphoreSignal MJ_UNLOCK(signalSemaphore)
|
||||
|
||||
// 过期
|
||||
#define MJExtensionDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
|
||||
|
||||
// 构建错误
|
||||
#define MJExtensionBuildError(clazz, msg) \
|
||||
NSError *error = [NSError errorWithDomain:msg code:250 userInfo:nil]; \
|
||||
[clazz setMj_error:error];
|
||||
|
||||
// 日志输出
|
||||
#ifdef DEBUG
|
||||
#define MJExtensionLog(...) NSLog(__VA_ARGS__)
|
||||
#else
|
||||
#define MJExtensionLog(...)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* 断言
|
||||
* @param condition 条件
|
||||
* @param returnValue 返回值
|
||||
*/
|
||||
#define MJExtensionAssertError(condition, returnValue, clazz, msg) \
|
||||
[clazz setMj_error:nil]; \
|
||||
if ((condition) == NO) { \
|
||||
MJExtensionBuildError(clazz, msg); \
|
||||
return returnValue;\
|
||||
}
|
||||
|
||||
#define MJExtensionAssert2(condition, returnValue) \
|
||||
if ((condition) == NO) return returnValue;
|
||||
|
||||
/**
|
||||
* 断言
|
||||
* @param condition 条件
|
||||
*/
|
||||
#define MJExtensionAssert(condition) MJExtensionAssert2(condition, )
|
||||
|
||||
/**
|
||||
* 断言
|
||||
* @param param 参数
|
||||
* @param returnValue 返回值
|
||||
*/
|
||||
#define MJExtensionAssertParamNotNil2(param, returnValue) \
|
||||
MJExtensionAssert2((param) != nil, returnValue)
|
||||
|
||||
/**
|
||||
* 断言
|
||||
* @param param 参数
|
||||
*/
|
||||
#define MJExtensionAssertParamNotNil(param) MJExtensionAssertParamNotNil2(param, )
|
||||
|
||||
/**
|
||||
* 打印所有的属性
|
||||
*/
|
||||
#define MJLogAllIvars \
|
||||
-(NSString *)description \
|
||||
{ \
|
||||
return [self mj_keyValues].description; \
|
||||
}
|
||||
#define MJExtensionLogAllProperties MJLogAllIvars
|
||||
|
||||
/**
|
||||
* 类型(属性类型)
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeInt;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeShort;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeFloat;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeDouble;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeLong;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeLongLong;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeChar;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeBOOL1;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeBOOL2;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypePointer;
|
||||
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeIvar;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeMethod;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeBlock;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeClass;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeSEL;
|
||||
FOUNDATION_EXPORT NSString *const MJPropertyTypeId;
|
||||
|
||||
#endif
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1c6e0d4a87fb14e4d875a61b0102114e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
//
|
||||
// MJFoundation.h
|
||||
// MJExtensionExample
|
||||
//
|
||||
// Created by MJ Lee on 14/7/16.
|
||||
// Copyright (c) 2014年 小码哥. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface MJFoundation : NSObject
|
||||
|
||||
+ (BOOL)isClassFromFoundation:(Class)c;
|
||||
+ (BOOL)isFromNSObjectProtocolProperty:(NSString *)propertyName;
|
||||
|
||||
@end
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: eabf940933e054b15bd32d0bd583d679
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
//
|
||||
// MJProperty.h
|
||||
// MJExtensionExample
|
||||
//
|
||||
// Created by MJ Lee on 15/4/17.
|
||||
// Copyright (c) 2015年 小码哥. All rights reserved.
|
||||
// 包装一个成员属性
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <objc/runtime.h>
|
||||
#import "MJPropertyType.h"
|
||||
#import "MJPropertyKey.h"
|
||||
|
||||
/**
|
||||
* 包装一个成员
|
||||
*/
|
||||
@interface MJProperty : NSObject
|
||||
/** 成员属性 */
|
||||
@property (nonatomic, assign) objc_property_t property;
|
||||
/** 成员属性的名字 */
|
||||
@property (nonatomic, readonly) NSString *name;
|
||||
|
||||
/** 成员属性的类型 */
|
||||
@property (nonatomic, readonly) MJPropertyType *type;
|
||||
/** 成员属性来源于哪个类(可能是父类) */
|
||||
@property (nonatomic, assign) Class srcClass;
|
||||
|
||||
/**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/
|
||||
/** 设置最原始的key */
|
||||
- (void)setOriginKey:(id)originKey forClass:(Class)c;
|
||||
/** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */
|
||||
- (NSArray *)propertyKeysForClass:(Class)c;
|
||||
|
||||
/** 模型数组中的模型类型 */
|
||||
- (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c;
|
||||
- (Class)objectClassInArrayForClass:(Class)c;
|
||||
/**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/
|
||||
|
||||
/**
|
||||
* 设置object的成员变量值
|
||||
*/
|
||||
- (void)setValue:(id)value forObject:(id)object;
|
||||
/**
|
||||
* 得到object的成员属性值
|
||||
*/
|
||||
- (id)valueForObject:(id)object;
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
+ (instancetype)cachedPropertyWithProperty:(objc_property_t)property;
|
||||
|
||||
@end
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f45d64b1010694cbd81916ffa3d67d9b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
//
|
||||
// MJPropertyKey.h
|
||||
// MJExtensionExample
|
||||
//
|
||||
// Created by MJ Lee on 15/8/11.
|
||||
// Copyright (c) 2015年 小码哥. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef enum {
|
||||
MJPropertyKeyTypeDictionary = 0, // 字典的key
|
||||
MJPropertyKeyTypeArray // 数组的key
|
||||
} MJPropertyKeyType;
|
||||
|
||||
/**
|
||||
* 属性的key
|
||||
*/
|
||||
@interface MJPropertyKey : NSObject
|
||||
/** key的名字 */
|
||||
@property (copy, nonatomic) NSString *name;
|
||||
/** key的种类,可能是@"10",可能是@"age" */
|
||||
@property (assign, nonatomic) MJPropertyKeyType type;
|
||||
|
||||
/**
|
||||
* 根据当前的key,也就是name,从object(字典或者数组)中取值
|
||||
*/
|
||||
- (id)valueInObject:(id)object;
|
||||
|
||||
@end
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: acf438f4ebe9b4af8b01e6508ea3ea64
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
//
|
||||
// MJPropertyType.h
|
||||
// MJExtension
|
||||
//
|
||||
// Created by mj on 14-1-15.
|
||||
// Copyright (c) 2014年 小码哥. All rights reserved.
|
||||
// 包装一种类型
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
* 包装一种类型
|
||||
*/
|
||||
@interface MJPropertyType : NSObject
|
||||
/** 类型标识符 */
|
||||
@property (nonatomic, copy) NSString *code;
|
||||
|
||||
/** 是否为id类型 */
|
||||
@property (nonatomic, readonly, getter=isIdType) BOOL idType;
|
||||
|
||||
/** 是否为基本数字类型:int、float等 */
|
||||
@property (nonatomic, readonly, getter=isNumberType) BOOL numberType;
|
||||
|
||||
/** 是否为BOOL类型 */
|
||||
@property (nonatomic, readonly, getter=isBoolType) BOOL boolType;
|
||||
|
||||
/** 对象类型(如果是基本数据类型,此值为nil) */
|
||||
@property (nonatomic, readonly) Class typeClass;
|
||||
|
||||
/** 类型是否来自于Foundation框架,比如NSString、NSArray */
|
||||
@property (nonatomic, readonly, getter = isFromFoundation) BOOL fromFoundation;
|
||||
/** 类型是否不支持KVC */
|
||||
@property (nonatomic, readonly, getter = isKVCDisabled) BOOL KVCDisabled;
|
||||
|
||||
/**
|
||||
* 获得缓存的类型对象
|
||||
*/
|
||||
+ (instancetype)cachedTypeWithCode:(NSString *)code;
|
||||
@end
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a6a61aec18ebe4a7880aec7a04865a4e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// NSBundle+resource.h
|
||||
// NSBundle+JoypacResource.h
|
||||
// Unity-iPhone
|
||||
//
|
||||
// Created by 洋吴 on 2019/4/15.
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSBundle (resource)
|
||||
@interface NSBundle (JoypacResource)
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9c9e06061005a48e5b939903d9640325
|
||||
guid: 53d9ad8aa4e514fa6b9eecf618f82bdb
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f9fc64e9893ae4558b2dc922b0eeef98
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSDictionary (obj)
|
||||
@interface NSDictionary (JoypacObj)
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a22389f79f5b841e7b423fb4709a5a22
|
||||
guid: e5a9a63fc6d4c467caa12cf80e9045ac
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||