GONCategories 0.5.8

GONCategories 0.5.8

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最新发布2017年2月

Nicolas Goutaland维护。



  • By
  • nicolasgoutaland

我在我的项目中使用了多年的Objective-C类。
有些分类不是我写的,因此我在头文件注释中添加了原始源代码,但我可能遗漏了一些。
如果是这样,请毫不犹豫地告诉我,我将更新头文件以添加原始源代码。

用法

只需根据适当的参数调用您要使用的方法。

安装

CocoaPods: pod 'GONCategories'
手动: 将您的项目的<强>Classes文件夹复制过去

在您的项目中导入所需的头文件。 .pch是一个不错的选择;)
您还可以导入<强> GON_Categories_All.h以将项目中的所有分类添加进去。

主要头文件

<强> GON_Categories_All.h:导入所有分类
<强> GON_CoreData_All.h:导入所有使用core data相关分类
<强> GON_FoundationExtensions_All.h:导入所有与Foundation相关的分类
<强> GON_UIKitExtensions_All.h:导入所有与UIKit相关的分类
<强> GON_StoreKitExtensions_All.h:导入所有与StoreKit相关的分类

CoreData

GON_NSManagedObjectContext+Fetching

/* Fetch one object using given key and value. Usefull to fetch objects on their uid key 
 * /!\ Warning, errors are ignored /!\
 */
- (id)fetchObject:(NSString *)entityName usingValue:(id)value forKey:(NSString *)key returningAsFault:(BOOL)fault;

/* Fetch one object using given predicate 
 * /!\ Warning, errors are ignored /!\
 */
- (id)fetchObject:(NSString *)entityName usingPredicate:(NSPredicate *)predicate returningAsFault:(BOOL)fault;

/* Count all objects for given entity.
 * /!\ Warning, errors are ignored /!\
 */
- (NSInteger)countObjects:(NSString *)entityName;

/* Count all objects using given predicate
 * /!\ Warning, errors are ignored /!\
 */
- (NSInteger)countObjects:(NSString *)entityName usingPredicate:(NSPredicate *)predicate;

/* Fetch all objects for given entity.
 * /!\ Warning, errors are ignored /!\
 */
- (NSArray *)fetchObjects:(NSString *)entityName returningAsFault:(BOOL)fault;

/* Fetch all objects using given predicate
 * /!\ Warning, errors are ignored /!\
 */
- (NSArray *)fetchObjects:(NSString *)entityName usingPredicate:(NSPredicate *)predicate returningAsFault:(BOOL)fault;

/* Fetch all objects for given entity and sort them.
 * /!\ Warning, errors are ignored /!\
 */
- (NSArray *)fetchObjects:(NSString *)entityName usingSortDescriptors:(NSArray *)sortDescriptors returningAsFault:(BOOL)fault;

/* Fetch all objects for given entity, using predicate and sort them.
 * /!\ Warning, errors are ignored /!\
 */
- (NSArray *)fetchObjects:(NSString *)entityName usingPredicate:(NSPredicate *)predicate usingSortDescriptors:(NSArray *)sortDescriptors returningAsFault:(BOOL)fault;

GON_NSManagedObjectContext+FetchRequestsConstructors

/* Create fetch request to fetch one object using given key and value. Usefull to fetch objects on their uid key  */
- (NSFetchRequest*)fetchRequestForEntityObject:(NSString*)entityName usingValue:(id)value forKey:(NSString*)key returningAsFault:(BOOL)fault;

/* Create fetch request to fetch one object using given predicate 
 */
- (NSFetchRequest*)fetchRequestForEntityObject:(NSString*)entityName usingPredicate:(NSPredicate*)predicate returningAsFault:(BOOL)fault;

/* Create fetch request to fetch all objects for given entity.
 */
- (NSFetchRequest*)fetchRequestForEntityObjects:(NSString*)entityName returningAsFault:(BOOL)fault;

/* Create fetch request to fetch all objects using given predicate
 */
- (NSFetchRequest*)fetchRequestForEntityObjects:(NSString*)entityName usingPredicate:(NSPredicate*)predicate returningAsFault:(BOOL)fault;

/* Create fetch request to fetch all objects for given entity and sort them.
 */
- (NSFetchRequest*)fetchRequestForEntityObjects:(NSString*)entityName usingSortDescriptors:(NSArray*)sortDescriptors returningAsFault:(BOOL)fault;

/* Create fetch request to fetch all objects for given entity, using predicate and sort them.
 */
- (NSFetchRequest*)fetchRequestForEntityObjects:(NSString*)entityName usingPredicate:(NSPredicate*)predicate usingSortDescriptors:(NSArray*)sortDescriptors returningAsFault:(BOOL)fault;

GON_NSManagedObjectContext+Utils

/* Delete all given objects*/
- (void)deleteObjects:(id <NSFastEnumeration>)objects;

GON_NSManagedObject+SortDescriptors.h

/* Must be implemented in subclasses to provide an array of NSSortDescriptors used in fetch request */
+ (NSArray *)sortDescriptors;

GON_NSManagedObject+PropertyExtraction.h

@interface NSManagedObject (PropertyExtraction)
/* Return an array of dictionaries containing values for asked properties names.
* Request is executed on class entity
*/
+ (NSArray *)valuesForProperties:(NSArray *)propertiesNames usingPredicate:(NSPredicate *)predicate managedObjectContext:(NSManagedObjectContext *)context;

/* Return an array of values for asked property name
* Request is executed on class entity */
+ (NSArray *)valuesForProperty:(NSString *)propertyName usingPredicate:(NSPredicate *)predicate managedObjectContext:(NSManagedObjectContext *)context;

GON_NSManagedObject+PropertyDescription.h

/* Return NSPropertyDescription for current entity, describing given attribute name */
+ (NSPropertyDescription*)propertyDescriptionForAttribute:(NSString*)attributeName inManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return an array of NSPropertyDescription for current entity, describing given attributes name */
+ (NSArray *)propertiesDescriptionForAttributes:(NSArray*)attributesName inManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return NSEntityDescription for current entity */
+ (NSEntityDescription*)entityDescription:(NSManagedObjectContext*)moc;

GON_NSManagedObject+FetchRequestConstructors.h

/* Create fetch request to fetch one object using given key and value. Usefull to fetch objects on their uid key  */
+ (NSFetchRequest*)fetchRequestUsingValue:(id)value forKey:(NSString*)key returningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch one object using given predicate 
*/
+ (NSFetchRequest*)fetchRequestUsingPredicate:(NSPredicate*)predicate returningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch all objects for given entity.
*/
+ (NSFetchRequest*)fetchRequestForAllEntitiesReturningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch all objects using given predicate
*/
+ (NSFetchRequest*)fetchRequestForAllEntitiesUsingPredicate:(NSPredicate*)predicate returningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch all objects for given entity and sort them.
*/
+ (NSFetchRequest*)fetchRequestForAllEntitiesUsingSortDescriptors:(NSArray*)sortDescriptors returningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch all objects for given entity, using predicate and sort them.
*/
+ (NSFetchRequest*)fetchRequestForAllEntitiesUsingPredicate:(NSPredicate*)predicate usingSortDescriptors:(NSArray*)sortDescriptors returningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch all objects for given entity. Class default sort descriptors are set.
* You have to add a + (NSArray *)sortDescriptors method in your entity class to provide your own sort descriptors
*/
+ (NSFetchRequest*)fetchRequestForAllSortedEntitiesReturningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

/* Create fetch request to fetch all objects using given predicate. Class default sort descriptors are set.
* You have to add a + (NSArray *)sortDescriptors method in your entity class to provide your own sort descriptors
*/
+ (NSFetchRequest*)fetchRequestForAllSortedEntitiesUsingPredicate:(NSPredicate*)predicate returningAsFault:(BOOL)fault forManagedObjectContext:(NSManagedObjectContext*)moc;

GON_NSManagedObject+FetchedResultsControllerConstructors.h

/* Return a configured FetchedResultsController */
+ (NSFetchedResultsController*)fetchedResultsControllerForFetchRequest:(NSFetchRequest*)fetchRequest delegate:(id <NSFetchedResultsControllerDelegate>)delegate usingManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return a configured FetchedResultsController using given cache */
+ (NSFetchedResultsController*)fetchedResultsControllerForFetchRequest:(NSFetchRequest*)fetchRequest cache:(NSString*)cache delegate:(id <NSFetchedResultsControllerDelegate>)delegate usingManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return a configured FetchedResultsController using given section name */
+ (NSFetchedResultsController*)fetchedResultsControllerForFetchRequest:(NSFetchRequest*)fetchRequest sectionName:(NSString*)sectionName delegate:(id <NSFetchedResultsControllerDelegate>)delegate usingManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return a configured FetchedResultsController using given cache and section name */
+ (NSFetchedResultsController*)fetchedResultsControllerForFetchRequest:(NSFetchRequest*)fetchRequest cache:(NSString*)cache sectionName:(NSString*)sectionName delegate:(id <NSFetchedResultsControllerDelegate>)delegate usingManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return a configured FetchedResultsController using a generated cache name */
+ (NSFetchedResultsController*)fetchedResultsControllerCachedForFetchRequest:(NSFetchRequest*)fetchRequest delegate:(id <NSFetchedResultsControllerDelegate>)delegate usingManagedObjectContext:(NSManagedObjectContext*)moc;

/* Return a configured FetchedResultsController using a generated cache name and given section name */
+ (NSFetchedResultsController*)fetchedResultsControllerCachedForFetchRequest:(NSFetchRequest*)fetchRequest sectionName:(NSString*)sectionName delegate:(id <NSFetchedResultsControllerDelegate>)delegate usingManagedObjectContext:(NSManagedObjectContext*)moc;
``

##Foundation
###GON_NSArray+Utils

/* 返回数组的随机副本 */

  • (NSArray *)shuffledArray;

/* 返回数组的反转版本 */

  • (NSArray *)reversedArray;

/* 使用给定的valueForKey字段作为字典的键,将给定数组转换为字典。

  • 如果valueForKey字段为nil,则对象将被跳过。
  • 如果有许多对象具有相同的键,则只存储在字典中最后一个对象 */
    • (NSDictionary *)convertToDictionaryUsingValueAsKey:(id)valueForKey;

/* 返回通过在每个对象上调用valueForKey:key构建的数组。

  • 如果valueForKey:返回nil,则对象将被跳过 */
    • (NSArray *)valuesForKey:(id)key;

/* 返回深度可变副本 */

  • (NSMutableArray *)mutableCopyDeep;

@property (nonatomic, readonly) NSRange range; // 返回数组的范围(0,count)

###GON_NSArray+SortedArray

/* 假设数组是有序的,使用给定函数检索对象插入索引 */

  • (NSUInteger)indexForInsertingObject:(id)object sortedUsingFunction:(NSInteger ( *)(id, id, void *))compare context:(void *)context;

/* 假设数组是有序的,使用给定选择器检索对象插入索引 */

  • (NSUInteger)indexForInsertingObject:(id)object sortedUsingSelector:(SEL)selector;

/* 假设数组是有序的,使用给定排序描述符检索对象插入索引 */

  • (NSUInteger)indexForInsertingObject:(id)object sortedUsingDescriptors:(NSArray *)descriptors;

/* 假设数组是有序的,使用给定块检索对象插入索引 */

  • (NSUInteger)indexForInsertingObject:(id)object sortedUsingBlock:(NSComparisonResult (^)(id obj1, id obj2))comparatorBlock;

###GON_NSData+Base64

/* 从NSData返回一个base 64编码的字符串 */

  • (NSString *)base64EncodedString;

###GON_NSData+String

/* 将数据作为十六进制字符串返回 */

  • (NSString *)hexaString;

/* 将数据作为UTF8编码的字符串返回 */

  • (NSString *)UTF8String;

###GON_NSDate+Utils

/* 昨日的构造函数 */

  • (instancetype)yesterday;

/* 今天的构造函数 */

  • (instancetype)today;

/* 明天的构造函数 */

  • (instancetype)tomorrow;

/* 判断是否是昨天 */

  • (BOOL)isYesterday;

/* 判断是否是今天 */

  • (BOOL)isToday;

/* 判断是否是明天 */

  • (BOOL)isTomorrow;

/* 通过添加给定天数创建一个新日期 */

  • (NSDate *)dateByAddingDays:(NSInteger)days;

/* 从日期中构建昨天日期,保持小时 */

  • (NSDate *)yesterday;

/* 从日期中构建明天日期,保持小时 */

  • (NSDate *)tomorrow;

/* 构建并返回一个日期,去除小时信息 */

  • (NSDate *)onlyDate;

/* 将本地时间日期转换为GMT时间 */

  • (NSDate *)convertLocalTimeDateToGMTDate;

/* 将日期转换为本地时间,假设日期是GMT日期 */

  • (NSDate *)convertGMTDateToLocalTimeDate;

/* 忽略时间信息比较两个日期 */

  • (BOOL)isEqualToDateIgnoringTime:(NSDate *)date;

###GON_NSDictionary+Utils

/* 与objectForKey:相同,但如果对象是[NSNull null],则返回nil */

  • (id)objectForKeyOrNil:(id)key;

/* 与objectForKeyOrNil:相同,但如果没有找到值,则返回defaultValue */

  • (id)objectForKeyOrNil:(id)key defaultValue:(id)defaultValue;

/* 与objectForKey:相同,但如果没有找到值,则返回defaultValue */

  • (id)objectForKey:(id)key defaultValue:(id)defaultValue;

/* 假设字典值是NSSet对象,因此返回关联到键的一个anyObject */

  • (id)anyObjectInSetForKey:(id)key;

/* 返回反转字典,使用键作为值,反之亦然。

  • 请注意,如果字典包含相同的对象,结果字典中可能缺少一些值 */
    • (NSDictionary *)invertedDictionary;

/* 检查字典是否具有给定键 */

  • (BOOL)hasKey:(NSString *)key;

/* 返回深度可变副本 */

  • (NSMutableArray *)mutableCopyDeep;

###GON_NSFileManager+Utils

/* 返回给定路径项的大小。

  • 如果项未找到,则返回0 */
    • (unsigned long long)sizeForItemAtPath:(NSString *)path;

/* 检查给定的文件是否是目录 */

  • (BOOL)isDirectoryAtPath:(NSString *)path;

###GON_NSHTTPURLResponse+Error

/* 基于URL响应生成NSError对象

  • 代码:self.statusCode
  • 本地描述:[NSHTTPURLResponse localizedStringForStatusCode:self.statusCode]
  • 域:@"NSHTTPURLResponse+Error.errorDomain" ==>> NSHTTPURLResponse_Error_ERROR_DOMAIN */
    • (NSError *)error;

@property (nonatomic, readonly) BOOL hasError; // 判断状态码是否匹配错误


###GON_NSIndexPath+Offset

/* 计算前一行的indexPath */

  • (NSIndexPath *)previousRow;

/* 计算后一行的indexPath */

  • (NSIndexPath *)nextRow;

/* 计算前一项的indexPath */

  • (NSIndexPath *)previousItem;

/* 计算后一项的indexPath */

  • (NSIndexPath *)nextItem;

/* 计算后一节的indexPath */

  • (NSIndexPath *)nextSection;

/* 计算前一节的indexPath */

  • (NSIndexPath *)previousSection;

###GON_NSMutableArray+SortedArray

/* 向数组中插入对象,假设数组已排序,使用指定的函数 */

  • (void)insertObject:(id)object sortedUsingFunction:(NSInteger (^(id, id, void *))compare) context:(void *)context;

/* 向数组中插入对象,假设数组已排序,使用指定的选择器 */

  • (void)insertObject:(id)object sortedUsingSelector:(SEL)selector;

/* 向数组中插入对象,假设数组已排序,使用指定的排序描述符 */

  • (void)insertObject:(id)object sortedUsingDescriptors:(NSArray *)descriptors;

/* 假设数组是有序的,使用给定块检索对象插入索引 */

  • (void)insertObject:(id)object sortedUsingBlock:(NSComparisonResult (^)(id obj1, id obj2))comparatorBlock;

###GON_NSMutableArray+Utils

/* 在数组中插入对象于第一个位置 */

  • (void)insertObjectFirst:(id)obj;

/* 从数组中移除第一个对象。等同于 [self removeObjectAtIndex:0]。 */

  • (void)removeFirstObject;

/* 打乱数组 */

  • (void)shuffle;

###GON_NSMutableDictionary+Set

/* 与 setObject:forKey:类似,但在 NSMutableSet 中添加值 */

  • (void)addObject:(id)value inSetForKey:(id)key;

/* 与 setObject:forKey:类似,但在 NSMutableSet 中合并所有值 */

  • (void)addObjects:(NSSet *)values inSetForKey:(id)key;

/* 与 removeObjectForKey:类似,但从创建的集中移除值。如果操作后集合为空,则将其移除。 */

  • (void)removeObject:(id)value fromSetWithKey:(id)key;

###GON_NSMutableDictionary+Array

/* 与 setObject:forKey:类似,但在 NSMutableArray 中添加值 */

  • (void)addObject:(id)value inArrayForKey:(id)key;

/* 与 setObject:forKey:类似,但在 NSMutableArray 中合并所有值 */

  • (void)addObjects:(NSArray *)values inArrayForKey:(id)key;

/* 与 removeObjectForKey:类似,但从创建的数组中移除值。如果操作后数组为空,则将其移除。 */

  • (void)removeObject:(id)value fromArrayWithKey:(id)key;

###GON_NSMutableDictionary+SortedArray

/* 与 setObject:forKey:类似,但在使用给定函数排序的 sorted NSMutableArray 中添加值 */

  • (void)addObject:(id)value inSortedArrayUsingFunction:(NSInteger (^(id, id, void *))compare) context:(void *)context forKey:(NSString *)key;

/* 与 setObject:forKey:类似,但在使用给定选择器排序的 sorted NSMutableArray 中添加值 */

  • (void)addObject:(id)value inSortedArrayUsingSelector:(SEL)aSelector forKey:(NSString *)key;

/* 与 setObject:forKey:类似,但在使用给定描述符排序的 sorted NSMutableArray 中添加值 */

  • (void)addObject:(id)value inSortedArrayUsingDescriptors:(NSArray *)descriptors forKey:(NSString *)key;

/* 与 setObject:forKey:类似,但在使用给定块排序的 sorted NSMutableArray 中添加值 */

  • (void)addObject:(id)value inSortedArrayUsingBlock:(NSComparisonResult (^)(id obj1, id obj2))comparatorBlock forKey:(NSString *)key;

###GON_NSMutableString+Utils

/* 压缩字符串

  • 返回 self */
    • (NSMutableString *)trim;

/* 将字符串的第一个字母转换为大写

  • 返回 self */
    • (NSMutableString *)ucFirst;

/* 将字符串的第一个字母转换为小写

  • 返回 self */
    • (NSMutableString *)lcFirst;

/* 移除所有重音符号

  • 返回 self */
    • (NSMutableString *)removeDiacritics;

/* 向字符串中添加非断行空格字符

  • - 标点符号规则(!, ?, 等...)
  • - 引号
  • 返回 self */
    • (NSMutableString *)addNonBreakingSpaceCharacters;

/* 将所有HTML实体替换为UTF-8字符

  • 返回 self */
    • (NSMutableString *)cleanHTMLEntities;

/* 向字符串中添加HTML实体

  • 返回 self */
    • (NSMutableString *)addHTMLEntities;

###GON_NSNotification+Constructors

/* 使用给定的名称和发送者构建通知,使用anObject和key构建用户信息 */

  • 使用指定名称的对象发布通知:(NSNotification*)notificationWithName:(NSString *)name object:(id)notificationSender withObject:(id)object forKey:(id)key;

###GON_NSNotificationCenter+MainThread

/* 在主线程上发布给定的通知 */

  • (void)postNotificationOnMainThread:(NSNotification *)notification;

/* 在主线程上发布给定的通知名称 */

  • (void)postNotificationNameOnMainThread:(NSString *)notificationName object:(id)notificationSender;

/* 在主线程上发布给定的通知名称和用户信息 */

  • (void)postNotificationNameOnMainThread:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo;

/* 在主线程上发布给定的通知,允许等待直到完成 */

  • (void)postNotificationOnMainThread:(NSNotification *)notification waitUntilDone:(BOOL)wait;

/* 在主线程上发布给定的通知名称,允许等待直到完成 */

  • (void)postNotificationNameOnMainThread:(NSString *)notificationName object:(id)notificationSender waitUntilDone:(BOOL)wait;

/* 在主线程上发布给定的通知名称和用户信息,允许等待直到完成 */

  • (void)postNotificationNameOnMainThread:(NSString *)notificationName object:(id)notificationSender userInfo:(NSDictionary *)userInfo waitUntilDone:(BOOL)wait;

###GON_NSObject+Block

/* 在主队列上执行一个块,没有延迟。发送是同步的*/

  • (void)performBlockOnMainQueueAndWait:(void (^)(void))block;

/* 在主队列上执行一个块,没有延迟。发送是异步的*/

  • (void)performBlockOnMainQueue:(void (^)(void))block;

/* 在主队列上执行一个块,在延迟后*/

  • (void)performBlockOnMainQueueAfterDelay:(NSTimeInterval)delay block:(void (^)(void))block;

/* 在后台队列上执行一个块,没有延迟。发送是异步的*/

  • (void)performBlockInBackground:(void (^)(void))block;

/* 在后台队列上执行一个块,没有延迟。发送是同步的*/

  • (void)performBlockInBackgroundAndWait:(void (^)(void))block;

/* 在指定的队列上执行一个块,在延迟后*/

  • (void)performBlockOnQueue:(dispatch_queue_t)queue afterDelay:(NSTimeInterval)delay block:(void (^)(void))block;

###GON_NSNumber+Compare

/* 返回self和另一个数字之间较大的一个。类似于MAX,用于NSNumber。

  • 如果相等,则返回self。
  • 如果anotherNumber是nil,则使用0进行比较 */
    • (NSNumber *)biggerNumber:(NSNumber *)anotherNumber;

/* 返回self和另一个数字之间较小的一个。类似于MIN,用于NSNumber

  • 如果相等,则返回self。
  • 如果anotherNumber是nil,则使用0进行比较 */
    • (NSNumber *)smallerNumber:(NSNumber *)anotherNumber;

###GON_NSString+Base64

/* 从字符串中返回数据,假设是一个base 64编码的字符串 */

  • (NSData *)dataFromBase64String;

###GON_NSString+Crypto

/* 返回基于字符串的SHA256散列字符串 */

  • (NSString *)SHA256;

/* 返回基于字符串转换为utf16后的SHA256散列 */

  • (NSString *)utf16SHA256;

/* 返回基于字符串的MD5散列 */

  • (NSString *)MD5;

/* 返回基于字符串转换为utf16后的MD5散列 */

  • (NSString *)utf16MD5;

###GON_NSString+SQL

/* 返回通过转义'字符清洁的SQL值 */

  • (NSString*)cleanedSQLValue;

###GON_NSString+Utils

/* 返回一个新字符串,初始化为一个生成的UUID */

  • (NSString *)stringWithUUID;

/* 返回一个新字符串,将给定的后缀附加到它,假设它是一个路径。

  • 这意味着后缀将添加到路径扩展名之前 */
    • (NSString *)stringByAppendingPathSuffix:(NSString *)pathSuffix;

/* 返回YES如果字符串包含给定的字符串 */

  • (BOOL)containsString:(NSString *)string;

/* 返回YES如果字符串以给定的字符串开头 */

  • (BOOL)startsWithString:(NSString *)string;

/* 返回YES如果字符串以给定的字符串结尾 */

  • (BOOL)endsWithString:(NSString *)string;

/* 返回剪过的字符串 */

  • (NSString *)stringByTrimmingCharacters;

/* 返回一个字符串,添加了非分隔空格字符

  • - 标点符号规则(!, ?, 等...)
  • - 引号
    • (NSString *)stringByAddingNonBreakingSpaceCharacters;

/* 返回第一个字母大写的相同字符串 */

  • (NSString *)stringUcFirst;

/* 返回第一个字母小写的相同字符串 */

  • (NSString *)stringLcFirst;

/* 返回移除了所有变音符号标记的相同字符串 */

  • (NSString *)stringByRemovingDiacritics;

/* 返回字符串的range */

  • (NSRange)range;

/* 返回一个URL编码的字符串 */

  • (NSString *)stringURLEncoded;

/* 返回一个字符串,其中所有HTML实体都被UTF-8字符替代 */

  • (NSString *)stringByCleaningHTMLEntities;

/* 返回一个字符串,需要时添加HTML实体 */

  • (NSString *)stringByAddingHTMLEntities;

###GON_NSURL+Utils

/* 返回查询参数 */

  • (NSDictionary *)queryParameters;

###GON_NSURL+Split

/* 根据baseURL计算基于值连接的URL数组

  • 值将使用description转换成字符串
  • 此方法将在url长度达到给定限制之前,将对象添加到values数组中。
  • 当限制达到时,计算一个新的URL。
    • (NSArray *)computeURLsFromBase:(NSString *)baseURLStr addingValues:(id )values separator:(NSString *)separator maxLength:(NSInteger)maxLength;

/* 基于baseURL,通过连接值计算URL。

  • 值将使用description转换成字符串
  • 对于每个计算的URL,将调用block,块带有计算的URL和连接的值。
  • 块可以返回一个对象。
  • 方法结果将包含由block计算的所有返回的对象。
  • 用于计算服务器操作 * */
    • (NSArray *)enumerateURLsFromBase:(NSString *)baseURLStr addingValues:(id )values separator:(NSString *)separator maxLength:(NSInteger)maxLength block:(id (^)(NSString *urlStr, NSArray *contatenedValues))block;

##UIKit
###GON_UIColor+Utils

/* 根据当前颜色返回最佳前景色。

  • 基于颜色的亮度返回黑色或白色。
    • (UIColor *)foregroundColor;

###GON_UIControl+Utils

/* 删除给定控制事件的全部目标 */

  • (void)removeAllTargetsForControlEvents:(UIControlEvents)controlEvents;

/* 删除全部目标 */

  • (void)removeAllTargets;

###GON_UIDevice+Information

@property (nonatomic, readonly) NSString *platform; @property (nonatomic, readonly) NSUInteger coresCount;


###GON_UIImage+Colors

/* 返回图像的灰度版本。如果发生错误,返回nil */

  • (UIImage *)grayscale;

###GON_UIImage+Utils

/* 返回给定路径图像的大小,无需将其加载到内存中 */

  • (CGSize)sizeForImageAtPath:(NSString *)path;

/* 返回给定URL图像的大小,无需将其加载到内存中 */

  • (CGSize)sizeForImageAtURL:(NSURL *)url;

/* 返回NSData PNG图像表示 */

  • (NSData *)pngRepresentationData;

/* 返回NSData JPG图像表示 */

  • (NSData *)jpgRepresentationData:(CGFloat)compression;

###GON_UILabel+AttributedFitting

/* 更新标签文本并允许其框架适应以显示所有文本,同时保持当前宽度。

  • 此方法返回新的标签高度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitToDisplayText:(BOOL)fitting;

/* 更新标签框架以显示所有文本,同时保持当前宽度。

  • 此方法返回新的标签高度 */
    • (CGFloat)fitLabelToDisplayAttributedText;

/* 更新标签文本并允许其框架适应以显示所有文本,同时在单行内显示。

  • 此方法返回新的标签宽度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitWidthToDisplayText:(BOOL)fitting;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定高度限制。

  • 此方法返回新的标签高度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitToDisplayText:(BOOL)fitting withMaxHeight:(CGFloat)height;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定宽度限制。

  • 此方法返回新的标签宽度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitWidthToDisplayText:(BOOL)fitting withMaxWidth:(CGFloat)width;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定高度限制。

  • 此方法返回新的标签高度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fittingWithMaxHeight:(CGFloat)height;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定宽度限制。

  • 此方法返回新的标签宽度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fittingWithMaxWidth:(CGFloat)width;

/* 更新标签框架以显示所有文本在单行中。

  • 此方法返回新的标签宽度 */
    • (CGFloat)fitLabelWidthToDisplayAttributedText;

/* 更新标签框架以显示尽可能多的文本在单行中,受给定宽度限制

  • 如果显示的文本小于标签框架,则标签框架将缩小。
  • 此方法返回新的标签宽度 */
    • (CGFloat)fitAttributedLabelToMaxWidth:(CGFloat)width;

/* 更新标签框架以显示尽可能多的文本在多行中,受给定高度限制

  • 如果显示的文本小于标签框架,则标签框架将缩小。
  • 此方法返回新的标签高度 */
    • (CGFloat)fitAttributedLabelToMaxHeight:(CGFloat)height;

###GON_UILabel+Fitting

/* 更新标签文本并允许其框架适应以显示所有文本,同时保持当前宽度。

  • 此方法返回新的标签高度 */
    • (CGFloat)setText:(NSString*)text fitToDisplayText:(BOOL)fitting;

/* 更新标签框架以显示所有文本,同时保持当前宽度。

  • 此方法返回新的标签高度 */
    • (CGFloat)fitLabelToDisplayText;

/* 更新标签文本并允许其框架适应以显示所有文本,同时在单行内显示。

  • 此方法返回新的标签宽度 */
    • (CGFloat)setText:(NSString*)text fitWidthToDisplayText:(BOOL)fitting;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定高度限制。

  • 此方法返回新的标签高度 */
    • (CGFloat)setText:(NSString*)text fitToDisplayText:(BOOL)fitting withMaxHeight:(CGFloat)height;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定宽度限制。

  • 此方法返回新的标签宽度 */
    • (CGFloat)setText:(NSString*)text fitWidthToDisplayText:(BOOL)fitting withMaxWidth:(CGFloat)width;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定高度限制。

  • 此方法返回新的标签高度 */
    • (CGFloat)setText:(NSString*)text fittingWithMaxHeight:(CGFloat)height;

/* 更新标签文本并允许其框架适应以显示尽可能多的文本,受给定宽度限制。

  • 此方法返回新的标签宽度 */
    • (CGFloat)setText:(NSString*)text fittingWithMaxWidth:(CGFloat)width;

/* 更新标签框架以显示所有文本在单行中。

  • 此方法返回新的标签宽度 */
    • (CGFloat)fitLabelWidthToDisplayText;

/* 更新标签框架以显示尽可能多的文本在单行中,受给定宽度限制

  • 如果显示的文本小于标签框架,则标签框架将缩小。
  • 此方法返回新的标签宽度 */
    • (CGFloat)fitLabelToMaxWidth:(CGFloat)width;

/* 更新标签框架以显示尽可能多的文本在多行中,受给定高度限制

  • 如果显示的文本小于标签框架,则标签框架将缩小。
  • 此方法返回新的标签高度 */
    • (CGFloat)fitLabelToMaxHeight:(CGFloat)height;

###GON_UINavigationController+Utils

/* 弹出当前视图控制器,带有动画。等同于 popViewControllerAnimated:YES */

  • (void)popViewControllerAnimated;

/* 弹出到根视图控制器,带有动画。等同于 popToRootViewController:YES */

  • (void)popToRootViewController;

/* 弹出当前视图控制器,没有动画。等同于 popViewControllerAnimated:NO */

  • (void)popViewController;

/* 弹出到根视图控制器,没有动画。等同于 popToRootViewController:NO */

  • (void)popToRootViewController;

###GON_UITableView+Reload

/* 使用给定的行动画重新加载显示的行

  • 等同于
  • [self reloadRowsAtIndexPaths:self.indexPathsForVisibleRows
  • withRowAnimation:animation]; */
    • (void)reloadVisibleRowsWithRowAnimation:(UITableViewRowAnimation)animation;

/* 使用动画重新加载给定索引路径的行

  • 等同于
  • [self reloadRowsAtIndexPaths:[NSArray arrayWithObject:anIndexPath]
  • withRowAnimation:animation]; */
    • (void)reloadRowAtIndexPath:(NSIndexPath*)anIndexPath withRowAnimation:(UITableViewRowAnimation)animation;

###GON_UITableView+Cells

/* 在给定索引路径插入一行

  • (void)insertRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;

/* 从给定索引路径删除一行

  • (void)deleteRowAtIndexPath:(NSIndexPath *)indexPath withRowAnimation:(UITableViewRowAnimation)animation;

###GON_UIView+Bounds

/* 更新视图边界X原点

  • (void)updateBoundsX:(CGFloat)x;

/* 更新视图边界Y原点

  • (void)updateBoundsY:(CGFloat)y;

/* 更新视图边界宽度

  • (void)updateBoundsWidth:(CGFloat)width;

/* 更新视图边界高度

  • (void)updateBoundsHeight:(CGFloat)height;

/* 将视图边界X原点增加incX

  • (void)addBoundsX:(CGFloat)incX;

/* 将视图边界Y原点增加incY

  • (void)addBoundsY:(CGFloat)incY;

/* 将视图边界宽度增加incWidth

  • (void)addBoundsWidth:(CGFloat)incWidth;

/* 将视图边界高度增加incHeight

  • (void)addBoundsHeight:(CGFloat)incHeight;

###GON_UIView+Fitting

/* 更新视图框架,将其相对于父视图垂直和水平居中

  • (CGRect)centerInSuperview;

/* 更新视图框架,将其相对于父视图水平居中

  • (CGRect)centerHorizontallyInSuperview;

/* 更新视图框架,将其相对于父视图垂直居中

  • (CGRect)centerVerticallyInSuperview;

/* 将视图框架更改为填充父视图框架: */

  • (CGRect)fillInSuperview;

/* 将视图框架更改为填充父视图宽度: */

  • (CGRect)fillInSuperviewWidth;

/* 将视图框架更改为填充父视图高度: */

  • (CGRect)fillInSuperviewHeight;

###GON_UIView+Frame

/* 更新视图框架原点

  • (void)updateFrameOrigin:(CGPoint)origin;

/* 更新视图框架大小

  • (void)updateFrameSize:(CGSize)size;

/* 更新视图框架X原点

  • (void)updateFrameX:(CGFloat)x;

/* 更新视图框架Y原点

  • (void)updateFrameY:(CGFloat)y;

/* 更新视图中心X

  • (void)updateCenterX:(CGFloat)x;

/* 更新视图中心Y

  • (void)updateCenterY:(CGFloat)y;

/* 更新视图框架宽度

  • (void)updateFrameWidth:(CGFloat)width;

/* 更新视图框架高度

  • (void)updateFrameHeight:(CGFloat)height;

/* 将incX添加到视图框架X原点

  • (void)addFrameX:(CGFloat)incX;

/* 将incY添加到视图框架Y原点

  • (void)addFrameY:(CGFloat)incY;

/* 将incWidth添加到视图框架宽度

  • (void)addFrameWidth:(CGFloat)incWidth;

/* 将incHeight添加到视图框架高度

  • (void)addFrameHeight:(CGFloat)incHeight;

###GON_UIView+Utils

/* 从视图创建一个图像

  • (UIImage *)imageFromView;

###GON_UIViewController+Utils

/* 带有动画关闭当前模态视图控制器。等同于 dismissViewControllerAnimated:YES completion:nil */

  • (void)dismissViewControllerAnimated;

/* 带有动画关闭当前模态视图控制器。等同于 dismissViewControllerAnimated:NO completion:nil */

  • (void)dismissViewController;

###GON_UIScrollView+Fitting

/* 通过添加内边距垂直居中内容

  • 如果内容大于滚动视图,则不执行任何操作
    • (void)addInsetsToCenterVertically;

/* 通过添加填充来实现水平居中内容

  • 如果内容高于滚动视图,则不执行任何操作 */
    • (void)addInsetsToCenterHorizontally;

/* 通过添加填充来实现居中内容 */

  • (void)addInsetsToCenter;

###GON_UITextView+Fitting

// 目前为空


###GON_UITextView+AttributedFitting

/* 更新textview文本并允许其框架适应,以便在多行上显示所有文本,同时保持当前宽度。

  • 此方法返回新的textview高度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitToDisplayText:(BOOL)fitting;

/* 更新textview文本并允许其框架适应,以便在单行上显示所有文本。

  • 此方法返回新的textview宽度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitWidthToDisplayText:(BOOL)fitting;

/* 更新textview文本并允许其框架适应,以便在给定高度内显示尽可能多的文本。

  • 此方法返回新的textview高度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitToDisplayText:(BOOL)fitting withMaxHeight:(CGFloat)height;

/* 更新textview文本并允许其框架适应,以在给定宽度内显示尽可能多的文本。

  • 此方法返回新的textview宽度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fitWidthToDisplayText:(BOOL)fitting withMaxWidth:(CGFloat)width;

/* 更新textview文本并允许其框架适应,以便在给定高度内显示尽可能多的文本。

  • 此方法返回新的textview高度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fittingWithMaxHeight:(CGFloat)height;

/* 更新textview文本并允许其框架适应,以在给定宽度内显示尽可能多的文本。

  • 此方法返回新的textview宽度 */
    • (CGFloat)setAttributedText:(NSAttributedString*)text fittingWithMaxWidth:(CGFloat)width;

##StoreKit
###GON_SKProduct+Utils

/* 返回用于向用户显示的本地化价格 */

  • (NSString *)localizedPrice;

##Versions
0.5   : Initial release<br/>