From f57930e03a8372be98ce50b23eca2c2f46a4bb2d Mon Sep 17 00:00:00 2001
From: lpw <812862340@qq.com>
Date: Thu, 11 Sep 2025 16:57:34 +0800
Subject: [PATCH] 提交版本 4.7.0
---
frameworks/FMDB.framework/Headers/FMResultSet.h | 282 +++++++++++++++++++++++++++++++++++---------------------
1 files changed, 176 insertions(+), 106 deletions(-)
diff --git a/frameworks/FMDB.framework/Headers/FMResultSet.h b/frameworks/FMDB.framework/Headers/FMResultSet.h
old mode 100755
new mode 100644
index af0433b..0832451
--- a/frameworks/FMDB.framework/Headers/FMResultSet.h
+++ b/frameworks/FMDB.framework/Headers/FMResultSet.h
@@ -1,5 +1,7 @@
#import <Foundation/Foundation.h>
+NS_ASSUME_NONNULL_BEGIN
+
#ifndef __has_feature // Optional.
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
#endif
@@ -15,20 +17,26 @@
@class FMDatabase;
@class FMStatement;
-/** Represents the results of executing a query on an `<FMDatabase>`.
+/** 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
- - `<FMDatabase>`
+ - @c FMDatabase
*/
-@interface FMResultSet : NSObject {
- FMDatabase *_parentDB;
- FMStatement *_statement;
-
- NSString *_query;
- NSMutableDictionary *_columnNameToIndexMap;
-}
+@interface FMResultSet : NSObject
+
+@property (nonatomic, retain, nullable) FMDatabase *parentDB;
///-----------------
/// @name Properties
@@ -36,7 +44,7 @@
/** Executed query */
-@property (atomic, retain) NSString *query;
+@property (atomic, retain, nullable) NSString *query;
/** `NSMutableDictionary` mapping column names to numeric index */
@@ -44,28 +52,15 @@
/** `FMStatement` used by result set. */
-@property (atomic, retain) FMStatement *statement;
+@property (atomic, retain, nullable) FMStatement *statement;
///------------------------------------
-/// @name Creating and closing database
+/// @name Creating and closing a result set
///------------------------------------
-
-/** 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:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;
/** Close result set */
- (void)close;
-
-- (void)setParentDB:(FMDatabase *)newDb;
///---------------------------------------
/// @name Iterating through the result set
@@ -75,7 +70,7 @@
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
*/
@@ -93,15 +88,35 @@
@see hasAnotherRow
*/
-- (BOOL)nextWithError:(NSError **)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 `<next>` succeed in retrieving another row?
- @return `YES` if the last call to `<next>` 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 `<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.
+ @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 @c NO, whether there is another row of data or not.
*/
- (BOOL)hasAnotherRow;
@@ -115,11 +130,11 @@
@return Integer value of the number of columns.
*/
-- (int)columnCount;
+@property (nonatomic, readonly) int columnCount;
/** 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.
*/
@@ -130,16 +145,16 @@
@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*)columnNameForIndex:(int)columnIdx;
+- (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;
@@ -148,16 +163,16 @@
@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;
@@ -166,14 +181,14 @@
@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.
*/
@@ -191,7 +206,7 @@
/** 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.
*/
@@ -209,7 +224,7 @@
/** 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.
*/
@@ -227,7 +242,7 @@
/** 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.
@@ -245,73 +260,81 @@
- (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 `NSString` value of the result set's column.
+ @return String value of the result set's column.
*/
-- (NSString*)stringForColumn:(NSString*)columnName;
+- (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.
- @return `NSString` value of the result set's column.
+ @return String value of the result set's column.
*/
-- (NSString*)stringForColumnIndex:(int)columnIdx;
+- (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 `NSDate` value of the result set's column.
+ @return Date value of the result set's column.
*/
-- (NSDate*)dateForColumn:(NSString*)columnName;
+- (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.
- @return `NSDate` value of the result set's column.
+ @return Date value of the result set's column.
*/
-- (NSDate*)dateForColumnIndex:(int)columnIdx;
+- (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 `NSData` value of the result set's column.
+ @return Data value of the result set's column.
*/
-- (NSData*)dataForColumn:(NSString*)columnName;
+- (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.
- @return `NSData` value of the result set's 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.
*/
-- (NSData*)dataForColumnIndex:(int)columnIdx;
+- (NSData * _Nullable)dataForColumnIndex:(int)columnIdx;
/** 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.
*/
-- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName;
+- (const unsigned char * _Nullable)UTF8StringForColumn:(NSString*)columnName;
+
+- (const unsigned char * _Nullable)UTF8StringForColumnName:(NSString*)columnName __deprecated_msg("Use UTF8StringForColumn instead");
/** Result set `(const unsigned char *)` value for column.
@@ -320,77 +343,110 @@
@return `(const unsigned char *)` value of the result set's column.
*/
-- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx;
+- (const unsigned char * _Nullable)UTF8StringForColumnIndex:(int)columnIdx;
/** Result set object for column.
- @param columnName `NSString` value of the name of the column.
+ @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:
*/
-- (id)objectForColumnName:(NSString*)columnName;
+- (id _Nullable)objectForColumn:(NSString*)columnName;
+
+- (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:
*/
-- (id)objectForColumnIndex:(int)columnIdx;
+- (id _Nullable)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"];
-
+
+@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)objectForKeyedSubscript:(NSString *)columnName;
+- (id _Nullable)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];
+@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)objectAtIndexedSubscript:(int)columnIdx;
+- (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 `NSData` value of the result set's column.
+ @return Data 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:>`)
@@ -398,13 +454,13 @@
*/
-- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;
+- (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.
- @return `NSData` value of the result set's column.
+ @return Data 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:>`)
@@ -412,22 +468,22 @@
*/
-- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
+- (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;
@@ -435,12 +491,10 @@
/** 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;
+@property (nonatomic, readonly, nullable) NSDictionary *resultDictionary;
/** Returns a dictionary of the row results
@@ -449,7 +503,7 @@
@warning **Deprecated**: Please use `<resultDictionary>` instead. Also, beware that `<resultDictionary>` is case sensitive!
*/
-- (NSDictionary*)resultDict __attribute__ ((deprecated));
+- (NSDictionary * _Nullable)resultDict __deprecated_msg("Use resultDictionary instead");
///-----------------------------
/// @name Key value coding magic
@@ -463,6 +517,22 @@
- (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
--
Gitblit v1.8.0