一个有用的扩展库。包含许多适用于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}
此扩展使检测设备是否为iPad变得简单
[UIDevice MG_isIPAD];
此扩展使设置和获取字体和fontSize变得简单
@property (nonatomic) NSString *fontName;
@property (nonatomic) CGFloat fontSize;
此扩展使根据设备的方向获取正确的屏幕大小变得简单
+ (CGRect) MG_screenRect;
此扩展使设置/获取 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;
此扩展使从 Xibs 中初始化 UIView 变得简单
- (id) MG_initWithNib;
类似于 UIView+Xib,此扩展同样使得从 Xibs 中初始化UIViewController变得简单。
- (id) MG_initWithNib;
此扩展使通过 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
此扩展使得检查一个字符串是否为键路径变得简单。这实际上是一个为 NSManagedObject+Map
扩展构建的辅助方法,但在其他情况下也可能很有用。
- (BOOL) MG_isKeyPath;
查看头文件以获取更多可调用的方法