iOS-Extensions 1.0.2

iOS-Extensions 1.0.2

测试已测试
语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Mark Glagola维护。



  • 作者:
  • Mark Glagola

一个有用的扩展库。包含许多适用于iOS项目的样板代码。

分类

UIDevice+isIPAD{.h,.m} UILabel+Font{.h,.m} UIScreen+Frame{.h,.m} UIView+Frame{.h,.m} UIView+Xib{.h,.m} UIViewController+Xib{.h,.m} NSManagedObject+Map{.h,.m} NSManagedObject+Extension{.h,.m} NSString+KeyPath{.h,.m}

UIDevice+isIPAD

此扩展使检测设备是否为iPad变得简单

[UIDevice MG_isIPAD];

UILabel+Font

此扩展使设置和获取字体和fontSize变得简单

@property (nonatomic) NSString *fontName;
@property (nonatomic) CGFloat fontSize;

UIScreen+Frame

此扩展使根据设备的方向获取正确的屏幕大小变得简单

+ (CGRect) MG_screenRect;

UIView+Frame

此扩展使设置/获取 VIEW 的属性变得简单

@property (nonatomic) CGFloat x;
@property (nonatomic) CGFloat y;
@property (nonatomic) CGFloat width;
@property (nonatomic) CGFloat height;
@property (nonatomic, readonly) CGFloat bottom;
@property (nonatomic, readonly) CGFloat right;

@property (nonatomic) CGSize size;

@property (nonatomic) CGFloat centerX;
@property (nonatomic) CGFloat centerY;

为什么要这样做

CGRect frame = self.view.frame;
frame.origin.x = 50.0f;
self.view.frame = frame;

当你可以这样做

self.view.x = 50.0f;

UIView+Xib

此扩展使从 Xibs 中初始化 UIView 变得简单

- (id) MG_initWithNib;

UIViewController+Xib

类似于 UIView+Xib,此扩展同样使得从 Xibs 中初始化UIViewController变得简单。

- (id) MG_initWithNib;

NSManagedObject+Map

此扩展使通过 NSDICTIONARY 映射将 JSON 对象解析到 Core Data 变得简单

使用.分隔符来建议键路径值。请参见下面的示例。

//Example of a json response (Taken from foursquare)
/*
 {
            "id":"42377700f964a52024201fe3",
            "name":"Brooklyn Heights Promenade",
            "contact":{

            },
            "location":{
               "address":"Columbia Heights",
               "crossStreet":"btwn Remsen & Orange",
               "lat":40.69829137715981,
               "lng":-73.99663209915161,
               "distance":342,
               "postalCode":"11201",
               "city":"Brooklyn",
               "state":"NY",
               "country":"United States",
               "cc":"US"
            },
            "canonicalUrl":"https:\/\/foursquare.com\/v\/brooklyn-heights-promenade\/42377700f964a52024201fe3",
            "categories":[
               {
                  "id":"4bf58dd8d48988d164941735",
                  "name":"Plaza",
                  "pluralName":"Plazas",
                  "shortName":"Plaza",
                  "icon":{
                     "prefix":"https:\/\/foursquare.com\/img\/categories_v2\/parks_outdoors\/plaza_",
                     "suffix":".png"
                  },
                  "primary":true
               }
            ],
            "verified":false,
            "stats":{
               "checkinsCount":14709,
               "usersCount":6874,
               "tipCount":89
            },
            "specials":{
               "count":0,
               "items":[

               ]
            },
            "hereNow":{
               "count":1,
               "groups":[
                  {
                     "type":"others",
                     "name":"Other people here",
                     "count":1,
                     "items":[

                     ]
                  }
               ]
            },
            "referralId":"v-1373042971"
         }
*/
+ (instancetype) venueWithJSON:(NSArray*)json context:(NSManagedObjectContext*)context {

    NSDictionary *map = @{
                          @"id" : kVenuePrimaryKey,
                          @"name": @"name",
                          @"canonicalUrl": @"canonicalUrl",
                          @"verified": @"verified",
                          @"location.address": @"address",
                          @"location.crossStreet": @"crossStreet",
                          @"location.lat": @"latitude",
                          @"location.lng": @"longitude",
                          @"location.distance": @"distance",
                          @"location.postalCode": @"postalCode",
                          @"location.city": @"city",
                          @"location.state": @"state",
                          @"location.country": @"country",
                          @"location.cc": @"cc",
                          };

    return [self MG_objectWithJSON:json primaryKey:kVenuePrimaryKey map:map context:context];    
}

您也可以通过主键值获取对象:

+ (instancetype) MG_objectWithPrimaryKey:(NSString*)primaryKey primaryValue:(id)primaryValue context:(NSManagedObjectContext*)context

NSString+KeyPath

此扩展使得检查一个字符串是否为键路径变得简单。这实际上是一个为 NSManagedObject+Map 扩展构建的辅助方法,但在其他情况下也可能很有用。

- (BOOL) MG_isKeyPath;

更多

查看头文件以获取更多可调用的方法