読者です 読者をやめる 読者になる 読者になる

せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

FESSとJSON最終章

fess9.2.0 iphoneアプリ開発 JSON Objective-C SimVersion8.1 xcode6.1.1

20150311追記:機能追加の項目を追記。

csny/finalfessjson · GitHub
 当初イメージしていたものが完成した。

完成画像

 まず、プルダウンでJSONを正常に取得して、表示できた。
f:id:Sediment:20150309154155p:plain
 ありえないホストを入れると、
f:id:Sediment:20150308233403p:plain
更新時にアラートを表示するが、アプリ自体は落ちない。
f:id:Sediment:20150308233419p:plain


 シリーズの2をベースに、ほかの機能をコードで盛り込んだだけなので、手順は示さない。

機能追加

 結果0件だった場合の通知機能と検索URLでよくある記号回避の機能(!なら%21とか)と空白による複数単語検索の機能を追加した。

 この辺でデバッグと機能追加は終わりにします。いや、気になり出すと本当にどこまでも終わらないので。
f:id:Sediment:20150311040408p:plain

// 検索文字置換
- (NSString *) urlescapeChar
{
    // ASCIIコード以外が含まれるかチェック
    NSString *words, *words1;
    NSCharacterSet *stringCharacterSet = [NSCharacterSet characterSetWithCharactersInString:_searchFld.text];
    NSCharacterSet *asciiWithoutSpaceCharacterSet = [NSCharacterSet characterSetWithRange:NSMakeRange(0x21, 0x5e)];
    if ([asciiWithoutSpaceCharacterSet isSupersetOfSet:stringCharacterSet]) {
        // 英数字のみ
        words = _searchFld.text;
    } else {
        // 英数字以外の文字がある(空白の可能性もある)
        // URL用のエンコード
        words1 = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(
                                                                                                      NULL,
                                                                                                      (__bridge CFStringRef)_searchFld.text, //元の文字列
                                                                                                      NULL,
                                                                                                      CFSTR("!*'();:@&=+$,/?%#[]"),
                                                                                                      CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
        // 空白を+に置換
        words = [words1 stringByReplacingOccurrencesOfString:@"%20" withString:@"+"];
    }
    return [NSString stringWithFormat:@"%@", words];
}
広告を非表示にする