2015年10月30日

[iOS] FastlaneでゴニョゴニョしてからEMLauncherにアップする

iOSアプリ開発担当の加島です。最近のリズムゲームアプリはすごいですね!(3Dアニメとか)ただ、私は現実のコインを使わないことにしています。今のところ。
さて、今回は巷で話題(となってから少し時間が経ちましたがここ最近僕の中で話題)のFastlaneを使ってみました。基本的な使い方は公式ガイドである以下をご参照ください。

iOSアプリの継続的デリバリーに便利なfastlaneのご紹介 - Qiita
http://qiita.com/gin0606/items/162d756dfda7b84e97d4

iOSアプリのリリースフロー自動化ツールfastlaneのmeetupに通訳で参加しました - Mercari Engineering
http://tech.mercari.com/entry/2015/07/13/143000

このFastlaneのビルドツールであるgymですが、直接ビルド設定を指定することができるようになっています。例えばlane内で

gym(
scheme: 'Dev',
configuration: 'Debug',
)

と指定すれば、DevSchemeのDebugConfigurationでビルドしてくれます!

以下、奮闘の記録です。

続きを読む
posted by Seesaa京都スタッフ at 00:00| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする

2015年10月16日

Objective-CでCSVデータを扱う

田中です。

CSVデータの読み込みを行うのにライブラリを探していたところ、以下のライブラリが便利そうでした。

CHCSVParser

使い方

#import "CHCSVParser.h"

@interface ViewController ()
<
  CHCSVParserDelegate
>

@property (nonatomic) NSMutableArray *rows;
@property (nonatomic) NSMutableArray *columns;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *fileName = @"sample";
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *path = [bundle pathForResource:fileName ofType:@"csv"];
    NSURL *url = [NSURL fileURLWithPath:path];
    
    CHCSVParser *parser = [[CHCSVParser alloc] initWithContentsOfDelimitedURL:url delimiter:','];
    parser.delegate = self;

    // 出力にダブルクォートのエスケープ無し
    parser.sanitizesFields = YES;

    // パース開始
    [parser parse];
}

#pragma mark - CHCParserDelegate methods


// パース開始
- (void)parserDidBeginDocument:(CHCSVParser *)parser
{
    self.rows = [NSMutableArray new];
}

// パース完了
- (void)parserDidEndDocument:(CHCSVParser *)parser
{
    // 完了時の処理
}

// パースエラー
- (void)parser:(CHCSVParser *)parser didFailWithError:(NSError *)error
{

}

// 列の読み込み開始
- (void)parser:(CHCSVParser *)parser didBeginLine:(NSUInteger)recordNumber
{
    self.columns = [NSMutableArray new];
}

// フィールドの値読み込み
- (void)parser:(CHCSVParser *)parser didReadField:(NSString *)field atIndex:(NSInteger)fieldIndex
{
    [self.columns addObject:field];
}

// 列の読み込み終了
- (void)parser:(CHCSVParser *)parser didEndLine:(NSUInteger)lineNumber
{
    [self.rows addObject:self.columns];

    self.columns = nil;
}

@end


CSVデータを扱う場合、カンマと改行に気をつけてデータの読み込みを行えばいいですが、値の中にカンマや改行された文やダブルクォートなどがある場合、何も考えずに読み込むとそれらがエスケープされていたりカンマの読み込み位置が間違ったりしてしまいます。
その辺りすべて面倒見てくれるので便利でしたが、値の保持などは自分で作業しないといけないのが少し手間なので自分で管理クラスを作成した方が後々楽そうです。
posted by Seesaa京都スタッフ at 19:13| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする

2015年10月01日

Xcodeで行うUIテスト

iOS担当のエモトです.

今回は約3ヶ月前に公開したテストに関する記事の続きになります.前回において,User Interface Testing / Recording のことに触れましたが,当時はXcode7がbetaだったので控えましたが,ついに問題なく書ける日がやってきました.

UIテストを使ってみる

使い方は非常に簡単です.シミュレーターを起動して,赤い丸ボタンの録画ボタンを押して,実際のUI操作を録画するだけです.
uiteest.png

そして,そのテストコードを動かせば,録画された動作を自動で行います.XCTAssertを組み合わせれば,画面操作して得られた結果を判定することもできます.簡単な操作でUIテストが行えるのでとても魅力です,しかし,問題として,まだ非同期テストには対応していませんので,万能ではありません.使用する場所は限られますが,標準でUIテストをサポートしてくれたのはうれしいことですね.
posted by Seesaa京都スタッフ at 12:00| Comment(0) | iOS | このブログの読者になる | 更新情報をチェックする