1、NSArray转json字符串:
- (NSString *)toJsonString {
NSString *jsonString = nil;
NSError *error;
#ifdef DEBUG
NSJSONWritingOptions options = NSJSONWritingPrettyPrinted;
#else
NSJSONWritingOptions options = 0;
#endif
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
options:options
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}
- (NSString *)toMutableJsonString {
NSMutableString *jsonString = nil;
NSError *error;
#ifdef DEBUG
NSJSONWritingOptions options = NSJSONWritingPrettyPrinted;
#else
NSJSONWritingOptions options = 0;
#endif
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
options:options
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
jsonString = [[NSMutableString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}
2、给NSArray中的UIView进行排序
- (NSArray<UIView*>*)sortedArrayByTag
{
return [self sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) {
if ([view1 respondsToSelector:@selector(tag)] && [view2 respondsToSelector:@selector(tag)])
{
if ([view1 tag] < [view2 tag]) return NSOrderedAscending;
else if ([view1 tag] > [view2 tag]) return NSOrderedDescending;
else return NSOrderedSame;
}
else
return NSOrderedSame;
}];
}
- (NSArray<UIView*>*)sortedArrayByPosition
{
return [self sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) {
CGFloat x1 = CGRectGetMinX(view1.frame);
CGFloat y1 = CGRectGetMinY(view1.frame);
CGFloat x2 = CGRectGetMinX(view2.frame);
CGFloat y2 = CGRectGetMinY(view2.frame);
if (y1 < y2) return NSOrderedAscending;
else if (y1 > y2) return NSOrderedDescending;
//Else both y are same so checking for x positions
else if (x1 < x2) return NSOrderedAscending;
else if (x1 > x2) return NSOrderedDescending;
else return NSOrderedSame;
}];
}