ユーティリティ機能をまとめた「DCUtil」クラス改訂版

Objective-Cのユーティリティ系機能をまとめた「DCUtil」クラスに文字列のトリミング機能を 6種追加しました。

主な機能は下記の14個です。今後随時更新して行きます。

主な機能

  1. 自動スリープ禁止モードの切り替え機能
  2. テキストと画像のソーシャルシェア機能
  3. ペーストボードへのテキストコピー機能
  4. 指定した URLを開く機能
  5. アラート表示機能
  6. info.plistから文字列取得
  7. レビューURLへの遷移機能
  8. iOS 7以降であるかの判別機能
  9. 前後にある半角スペースの削除
  10. 前後にある改行の削除
  11. 前後にある全角スペースと改行の削除
  12. 前後にあるアルファベット文字セットの削除
  13. 前後にある数字の文字セットの削除
  14. 先頭の指定した文字列の削除

下記よりソースコードのダウンロードが行えます。

ダウンロード

使用方法

前後にある半角スペースの削除

1
2
3
4
5
6
7
8
9
NSString *resultText = [DCUtil trimWhitespaceCharacterSet:@" Apple "];

// コンソール出力
NSLog(@"resultText: %@", resultText);

/**
 * 出力結果: 
 * resultText: Apple
 */

先頭の指定した文字列の削除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 元のテキスト
NSString *originalText = @"LemonApple";

// 元のテキストから指定した文字列を削除
NSString *resultText = [DCUtil trimFirstCharacterSet:originalText searchString:@"Lemon"];

// コンソール出力
NSLog(@"originalText: %@", originalText);
NSLog(@"resultText: %@", resultText);

/**
 * 出力結果: 
 * originalText: LemonApple
 * resultText: Apple
 */

他の機能についての解説記事

ソースコード

DCUtil.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#import <Foundation/Foundation.h>

@interface DCUtil : NSObject

#pragma mark - public method
+ (void)setIdleTimerDisabled:(BOOL)isDisabled;
+ (void)socialShare:(id)delegate shareText:(NSString *)shareText shareImage:(UIImage *)shareImage;
+ (void)copyToPasteBoard:(NSString *)copyText completeAlertMessage:(NSString *)completeAlertMessage;
+ (void)openUrl:(NSString *)url;
+ (void)openReviewUrl:(NSString *)appStoreId;
+ (void)showAlert:(NSString *)title message:(NSString *)message cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles;
+ (NSString *)trimWhitespaceCharacterSet:(NSString *)string;
+ (NSString *)trimNewLineCharacterSet:(NSString *)string;
+ (NSString *)trimWhitespaceAndNewLineCharacterSet:(NSString *)string;
+ (NSString *)trimAlphanumericCharacterSet:(NSString *)string;
+ (NSString *)trimDicimalDigitCharacterSet:(NSString *)string;
+ (NSString *)trimFirstCharacterSet:(NSString *)string searchString:(NSString *)searchString;
+ (NSString *)getStrFromPlist:(NSString *)key;

@end

DCUtil.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#import "DCUtil.h"

@implementation DCUtil

#pragma mark - Idle Timer

// 自動スリープ禁止の切り替え
+ (void)setIdleTimerDisabled:(BOOL)isDisabled
{
    [[UIApplication sharedApplication] setIdleTimerDisabled:isDisabled];
}

#pragma mark - Social Share

// シェアする
+ (void)socialShare:(id)delegate shareText:(NSString *)shareText shareImage:(UIImage *)shareImage
{
    if([UIActivityViewController class]) {
        NSString *textToShare = shareText;
        UIImage *imageToShare = shareImage;
        NSArray *itemsToShare = [[NSArray alloc] initWithObjects:textToShare, imageToShare, nil];
        UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
        activityVC.excludedActivityTypes = [[NSArray alloc] initWithObjects: UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeMessage, UIActivityTypePostToWeibo, nil];
        [delegate presentViewController:activityVC animated:YES completion:nil];
    }
}

#pragma mark - Copy to Paste Board

// ペーストボードにコピー
+ (void)copyToPasteBoard:(NSString *)copyText completeAlertMessage:(NSString *)completeAlertMessage
{
    // ペーストボードにコピー
    UIPasteboard *board = [UIPasteboard generalPasteboard];
    [board setValue:copyText forPasteboardType:@"public.utf8-plain-text"];

    // コピー完了アラート表示
    [DCUtil showAlert:nil message:completeAlertMessage cancelButtonTitle:nil otherButtonTitles:nil];
}

#pragma mark - Open Url

// URLを開く
+ (void)openUrl:(NSString *)url
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}

#pragma mark - Open Review URL

// AppStoreのレビューURLを開く
+ (void)openReviewUrl:(NSString *)appStoreId
{
    NSString *reviewUrl;
    if ([DCUtil isIOS7]) {
        reviewUrl = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@", appStoreId];
    } else {
        reviewUrl = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%@&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software", appStoreId];
    }
    [DCUtil openUrl:reviewUrl];
}

#pragma mark - Show Alert

// アラート表示
+ (void)showAlert:(NSString *)title message:(NSString *)message cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles
{
    if (otherButtonTitles == nil) otherButtonTitles = @"OK";
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                    message:message
                                                   delegate:self
                                          cancelButtonTitle:cancelButtonTitle
                                          otherButtonTitles:otherButtonTitles, nil];
    [alert show];
}

#pragma mark - Trim Strings

// 前後にある半角スペースのトリミング
+ (NSString *)trimWhitespaceCharacterSet:(NSString *)string
{
    return [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}

// 前後にある改行のトリミング
+ (NSString *)trimNewLineCharacterSet:(NSString *)string
{
    return [string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
}

// 前後にある全角スペースと改行のトリミング
+ (NSString *)trimWhitespaceAndNewLineCharacterSet:(NSString *)string
{
    return [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

// 前後にあるアルファベット文字セットのトリミング
+ (NSString *)trimAlphanumericCharacterSet:(NSString *)string
{
    return [string stringByTrimmingCharactersInSet:[NSCharacterSet alphanumericCharacterSet]];
}

// 前後にある数字の文字セットのトリミング
+ (NSString *)trimDicimalDigitCharacterSet:(NSString *)string
{
    return [string stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
}

// 先頭の指定した文字列をトリミング
+ (NSString *)trimFirstCharacterSet:(NSString *)string searchString:(NSString *)searchString
{
    if ([string hasPrefix:searchString]) {
        NSString *newString = [string substringWithRange:NSMakeRange(searchString.length, string.length - searchString.length)];
        return newString;
    }
    return string;
}

#pragma mark - Get Str from info.plist

// info.plistから文字列取得
+ (NSString *)getStrFromPlist:(NSString *)key
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"string" ofType:@"plist"];
    NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:path];
    NSString *ret = [plist objectForKey:key];
    return [ret stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
}

#pragma mark - Utils

// iOS7以降であるか
+ (BOOL)isIOS7
{
    NSString *osversion = [UIDevice currentDevice].systemVersion;
    NSArray *a = [osversion componentsSeparatedByString:@"."];
    return ([(NSString*)[a objectAtIndex:0] intValue] >= 7);
}

@end

お薦めの参考書

絶対に挫折しない iPhoneアプリ開発「超」入門 増補改訂第4版
Swiftについて知りたい開発者の方のみならず、プログラミング未経験者の方にも参考になる内容になっています。Swiftの基礎を一から丁寧に解説されており、この書籍があればネットで調べる手間をかなり省くことができると思います。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)