2018年5月9日水曜日

[PR]メモアプリをリリース

FavOrites-いつでも再開のメモアプリ- をリリースしました!
あのとき書いたメモはどこにやったかな?に応えるアプリです!





ダウンロードはこちらから!



2016年8月17日水曜日

iPhone PLUS (Powered by ASCII) に TimeAndEntryが紹介されました!

あの週間アスキーさんが運営されているiPhone PLUSで TimeAndEntryが紹介されました!

来月のお給料をアプリが予測?わかっちゃうんです!勤怠アプリ「TimeAndEntry」





掲載記事はこちら
http://iphone.ascii.jp/2016/08/12/884594544/


この機会にぜひダウンロードください!
→アプリをダウンロード



2016年7月30日土曜日

[PR]勤怠メモアプリを更新

-PR-勤怠メモアプリを更新しました。

今回は大規模アップデート。
今まで勤務時間から将来の残業時間を予測しお給料計算まで出来ちゃいます!
是非是非チェックしてみてください!


<TimeAndEntry-残業分析もできる打刻忘れナシの勤怠メモ>

2016年6月18日土曜日

[iOS開発] autolayout engine from a background, and crashed.

This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes.


今日は表題のメッセージ出くわしたので、ちょっと投稿したい。こんなコードを書いていたのである。


- (void)viewDidLoadSetupSearchBar{
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT0), ^{
        // バックグラウンドで行う処理を記述
        [self some_process];


    });

   /....../

    

}


-(void)some_process{
    [self.view setNeedsUpdateConstraints];          // <- いけない子



   /....../

}


実行すると表題のメッセージ。
まあ、バックグラウンドでオートレイアウトを動かさないでということなのであった。そういえば、描画関係はバックグラウンドで処理させようとするとうまく動かないが、何か内部処理として関係があるのかもしれない。

いろいろ試しましたが、描画するときに main に戻せば問題ない模様。
auto layout engine .... がどうとかちょっと罠にはまってしまいました。

-(void)some_process{

       dispatch_async(dispatch_get_main_queue(), ^{
         [self.view setNeedsUpdateConstraints];          // <- いけない子

        /....../

        });

}


以上、こんな感じ。
ではでは。



2016年4月5日火曜日

[iOS開発]XCODE7.3 のオートコンプリート(コード補完)がむかつく件

XCode7.3 の AutoCompleteってちゃんと動いてる?

Xcode7.3ではオートコンプリート機能がパワーアップしました!ってかいてある。



でもね?

これがむかつくわけだ!

例えばこんな風にユーザー定義のクラス名を補完させようとすると、全然出てくれないわけです。





図:ユーザー定義クラス T_Expense をコード補完させようとすると・・・?



全然コンプリートしない。むしろリストが多くて探してしまうわけです。でも全然ないわけ。

ちなみに、ビルドすると出てくるようになります。







図:ビルドしてみる。 T_Expense をコード補完させようとすると・・・?

オートコンプリートするための辞書がどうにかなっちゃってるんですかね? APPLEの中の人はこんなコンプリートで開発だか何かやってるのかな。不思議です。

ちなみに、ビルドの際にエラーがあろうがなかろうがオーケーです
ビルドのショートカットキーは Command +B。参考までに。



前のバージョンに戻すわけにもいかないしなぁ。
早く何とかして欲しいです。


というわけで。またー





2016年3月17日木曜日

[iOS開発][CoreData]The fetched object at index ….. has an out of order section name

The fetched object at index …..  has an out of order section name

今日はCoreDataをいじっていたら表題のエラーに出くわしたので、それを投稿したい。

対処としては簡単なのだが、なんかイマイチな仕様だなぁ・・・とモヤッたので書きたいのである。

さっそく、どんなコードを書いていたのかというと。

  NSFetchRequest *request = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@“clothes”
                                                  inManagedObjectContext:context];
        [request setEntity:entity];
        
        
  
        NSSortDescriptor *sd2 = [[NSSortDescriptor alloc] initWithKey:@“color” ascending:YES];
        NSSortDescriptor *sd3 = [[NSSortDescriptor alloc] initWithKey:@“size” ascending:YES];
        
        request.sortDescriptors = [NSArray arrayWithObjects:sd2,sd3, nil];
        
        NSDictionary *entityProperties = [entity propertiesByName];
        
        NSMutableArray *properties = [NSMutableArray arrayWithObject:
[entityProperties objectForKey:@“sex”]];
        [properties addObject:[entityProperties objectForKey:@"color"]];
        [properties addObject:[entityProperties objectForKey:@"size"]];
        [request setPropertiesToFetch:properties];
        
        [request setResultType:NSDictionaryResultType];
        
        NSFetchedResultsController *controller =
        [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:@“sex” cacheName:nil]; 
        
        controller.delegate = self;
        [controller performFetch:nil];


こんな感じなのである。performFetchをしたところで、エラーを出力してフェッチできないという状態。

まあ、メッセージにある通り、セクション指定をしてあるにもかかわらず、そのデータで区切れないデータだったのでエラーとしたようである。


・・・略・・・・

        NSSortDescriptor *sd2 = [[NSSortDescriptor allocinitWithKey:@“color” ascending:YES];
        NSSortDescriptor *sd3 = [[NSSortDescriptor allocinitWithKey:@“size” ascending:YES];
        
        request.sortDescriptors = [NSArray arrayWithObjects:sd2,sd3, nil];

・・・中略・・・・

        [[NSFetchedResultsController allocinitWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:@“sex” cacheName:nil]; 



なので、ソート条件に追加してやる


・・・略・・・・
        NSSortDescriptor *sd1 = [[NSSortDescriptor allocinitWithKey:@“sex ascending:YES];
        NSSortDescriptor *sd2 = [[NSSortDescriptor allocinitWithKey:@“color” ascending:YES];
        NSSortDescriptor *sd3 = [[NSSortDescriptor allocinitWithKey:@“size” ascending:YES];
        
        request.sortDescriptors = [NSArray arrayWithObjects:sd1,sd2,sd3, nil];

・・・中略・・・・

        [[NSFetchedResultsController allocinitWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:@“sex” cacheName:nil]; 



うまく動作!
何がモヤっとしたかというと、セクション区切りに使う場合には、その項目はプログラムの挙動的にはソートされていないと実現できないだろうという確信があったんですが、あえて、それはソート条件に入れてなかったんですよ。

だって、セクションに指定してますよ、ってメソッドに入ってますからね。

        [[NSFetchedResultsController allocinitWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:@“sex” cacheName:nil]; 


で、コンパイラエラーになりもしなけりゃ、実行時エラーにもならない。
お!動くじゃん。賢いね!と思ってたら、突然動かない。で、調べたら表題のエラー。

このエラー、データがたまたまセクション区切りできるように綺麗にデータベースに入ってると発生しないんですよ。ひどい仕様だと思いません?


ということでいつまでもボヤいていても仕方ないので、今日はこの辺で。

ではでは。










2016年3月7日月曜日

[iOS開発] _handleNonLaunchSpecificActions in iOS9

よくわからんエラーが出た

デバッガーからのメッセージはこんな感じ。

 -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }

:iOS 9.2.1 実機、 xcode7.2 で発生


stack overflow によると、iOS9 にて発生する事象(バグ?)のようである。

ようである、というのは このメッセージ、 _handleNon... と アンダースコアで始まるからだ。
このルール、apple の公式ドキュメントによると 内部メソッドという決まりがある。

ということで基本的にプログラムのロジックエラーではないというのが stack overflow のメンツのご意見。
まあ、私も彼らの意見を読んでみて、それが妥当であるように思う。

かならず発生するわけではなく、特定のビルドでもないからだ。
強いて言うと、画面操作を行っている場合に、メッセージログにこれが出る感じ。

ちなみに、iOS9 betaでも発生していたという情報もあるので、この事象はまだ治っていないということになる。


ではでは。