タグ別アーカイブ: アイフォン

海外ニュース見出し、アンドロイドユーザは以前よりもアイフォンに乗り換えているという調査結果|ビル・ゲイツはナイジェリアでポリオの根絶に援助|(国内)ご注意米国、豪州の輸入牛肉、女性ホルモンの濃度、米国産の赤身肉は国産の約600倍、、食品偽装近鉄グループの高級旅館「奈良万葉若草の宿三笠」、牛脂注入の“霜降り肉”偽装

海外ニュース

ビル・ゲイツは、ナイジェリアでポリオの根絶に援助

>マイクロソフトは今後の未来は暗いですが、ビル・ゲーツによって、ナイジェリアの国民の命が救われます。
Bill Gates seeks to help eradicate polio in Nigeria

アメリカの億万長者ビル・ゲーツ氏は月曜日、ナイジェリアでポリオの根絶を約束しました。ナイジェリアはアフリカで最も人口が多く、身体を衰弱させる病気によりいまだに生活が苦しい状態です。

「これがナイジェリアの4度目の訪問です。毎年私は、ここに来て見てポリオの根絶を私のゴールにします」
出資者フォーラムでゲーツ氏は述べました。

アフリカで最も金持ちのアリコ・ダンゴート氏がそのフォーラムに出席していました。

「私はあなた方とパートナーシップを提携することに決め、ポリオの根絶についてマイルストーンを設定しました。」
(と中略)

1988年 ポリオは125の国々で風土病となり、2012年までにアフガニスタン、ナイジェリアとパキスタンの3つに減少しました。保険制度が整っておらず、予防接種キャンペーンは、イスラム教徒によって混乱しました。ナイジェリアは2009年からイスラム反政府と戦っています。

アンドロイドユーザは以前よりもアイフォンに乗り換えているという調査結果

>アイフォンを購入した人が以前持っていた携帯電話の所有関係グラフを見ると、2013年で60%がアイフォンユーザ、21%がアンドロイドユーザでした。アンドロイドからアイフォンに乗り換える人が昨年よりも多くなったそうです。
Study finds Android users now switching to iPhones more than ever

消費者情報研究パートナー会社による調査で、アイフォン5sと5cを発売したアップルにとって良いニュースと悪いニュースが有りました。
悪いニュースは、2013年、他のプラットフォームから乗り換えたアメリカの新しいアイフォンユーザは少数であり結果としてアップルのビジネスの中で比率から言えば、少ないパーセンテージを示しました。アンドロイドや他のプラットフォームから乗り換えた消費者は重要な顧客です。最近では、アイフォンをすでに保有した顧客の者も増加しているとのことです。

良いニュースは、減少の理由は携帯電話を所有している消費者は基本的な携帯電話を持っています。アンドロイド利用者が以前より増してアイフォンに切り替えているということです。アイフォンを購入した21%はアンドロイドから今年9月に乗り換えた人です。昨年2012年は16%だったので、比較すると5%も上昇しています。
この調査結果は、新しいアイフォン購入者400人を基準に集計したものです。

国内ニュース

ご注意米国、豪州の輸入牛肉、女性ホルモンの濃度、米国産の赤身肉は国産の約600倍、近鉄グループの高級旅館「奈良万葉若草の宿三笠」、牛脂注入の“霜降り肉”偽装

>日本で使用禁止の成長ホルモン剤が、合法の米国、豪州で使用されて牛に大量投与。日本で禁止された牛の肉骨粉を米国では使用されているらしいので、米国産、オーストラリア産の牛肉は注意が必要です。幼いお子さんの成長が異常に早い場合は、これらのホルモン剤が影響している恐れがあるのでは?と心配しそうです。
 せっかく記念日に高いお肉を買って実は偽装肉だったらショックです。たまには奮発して、高いお肉で満足しようとして食べてみたらなんだかいつものお肉と変わらない。そんなはずはないと思い、いつも食べる安い肉よりもきっと美味しいと思って食べていたのに、裏切られたとわかったらショックです。

サシの形に注目 「和牛」と「牛脂注入肉」の見分け方

「輸入牛肉で見逃せないのは、大量投与される成長ホルモン剤。日本では使用できないが、米国、豪州では合法。問題は、それがいかに肉に残留しているかだが、専門家が女性ホルモンの濃度を調べると、米国産の赤身肉は国産の約600倍と異常に高かった。EU(欧州連合)は、残留する女性ホルモンに「発がん性の疑いがある」と主張して、24年前から米国産牛肉の禁輸を続けている。」

「米国での牛のエサは、遺伝子組み換えの大豆カス、トウモロコシが主体。BSE(牛海綿状脳症)発生後、日本やEUは家畜、家禽(かきん)に牛の肉骨粉を与えることを全面禁止にしたが、米国では今なお使われている。また、日本は月齢20カ月以上の牛肉に対してBSE検査を実施中だが、米国では検査システムもない。」

(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない|(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

(1)Androidアプリ開発、今日のエラー,AndroidManifest.xml、AndroidActivity.xmlの設定忘れ、Admob広告を表示させる,error、 エミュレータ 動かない,エミュレータを起動してもアプリが実行されない

  1. アイフォンアプリの場合はこちら
  2. Androidアプリ開発、今日のエラーまとめ(1)ー(6)分、2003年9月22日〜11月7日(1)から(6)まとめのリンクはこちら
  3. (7) 今日のエラーAndroidアプリ開発、andEngine GLES2 Anchor Center,box2d |manifest.xmlの記述ミスでintentでエラーはこちら

アイフォンアプリをアンドロイドアプリに移植中です。
 アイフォンの開発言語はobjective-cで、アンドロイドはJAVA言語になります。JAVAをベースにしてアンドロイドアプリをつくるとしてもアンドロイドアプリのための固有の開発方法がありそうです。

(1)ワーニング AndroidManifest.xml

Description Resource Path Location Type
Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details. AndroidManifest.xml

android:targetSdkVersion=”18″
しました。

(2)android エミュレータ 動かない,エミュレータを起動してもアプリが実行されないときは

EclipseからAndroidエミュレータを起動してもアプリが実行されない
この記事を参考にしてようやくハローワールドが表示されました。

(3)intent 画面遷移で移動できない、対処はAndroidActivity.xmlの設定忘れ

AndroidActivity.xmlに

(4)adView = new AdView(this, AdSize.BANNER, “ID-XXX”);でエラー

Could not find class ‘com.google.ads.AdView’, referenced from method com.AAA.bentannote2.MainActivity.onCreate

Admobのライブラリの挿入方法が教科書のヘルプであるグーグルの説明と異なり、変わったようです。

正しくは、
libs/GoogleAdMobAdsSdk-XXX.jarとなるように、GoogleAdMobAdsSdk-XXX.jarをコピーします。
私は手動で、コピペしました。
もし、すでに、教科書通りにGoogleAdMobAdsSdk-XXX.jarを挿入していたら、挿入済みを一旦削除してください。
すでに登録されているGoogleAdMobAdsSdk-XXX.jarがあるとエラーになります。

AdMobの使い方
Could not find class ‘com.google.ads.AdView’

(5)配列が初期化されていない

宣言だけして、初期化を忘れていました。
 myArray=new ArrayList();
宣言をしたら、どこにでもいいのでまず、初期化を書くように習慣づけたいと思います。

(1)アイフォンアプリをアンドロイドアプリに移植、コード比較、変換方法

x-code,android アイフォンアプリを作ったのでアンドロイドアプリを作ってみよう

アンドロイドアプリなんて作ることはないと思ってました。
アンドロイドアプリを作成するのに、今度はJAVAを覚えなくてはならないという手間が嫌でした。それに、アンドロイドアプリを作っても果たしてダウンロードをする人がいるのか、作っても無駄な作業にナルト思っていました。
しかし、自分の作ったアイフォンアプリが比較的よくできたと思ってしまったので、アンドロイドアプリを作ることにしました。それに、自分が使うアプリなら、誰もダウンロードしてくれなくても、自分が使えていればそれで十分なのかもしれません。

まずは、作り方から勉強します。
内容と構成はアイフォンアプリと同じなので必要な機能を覚えて行きます。

まずは簡単なアプリからはじめます。

アイフォンアプリのx-codeと比較しながらメモをとっていきます。
いずれ、アンドロイドアプリの作り方をすぐに忘れてしまいます。忘れても良いように書いておきます。

<アイフォンアプリをアンドロイドに移植開発>

アイフォンアプリは、スマートボードを利用してViewを作成すると便利です。アンドロイドは、1アプリで画面展開を一覧表示する機能はないので、1View1画面毎に表示して、作業をします。
レイアウトXMLがView画面に相当し、JAVAクラスからでもオブジェクトを作成できます。

 説明文中で、アイフォンアプリ、iOS, XCODE, objective-Cと書いた場合は、アイフォンアプリについての説明を記載したものです。アンドロイドアプリ、eclipse, JAVAと書いた場合は、アンドロイドアプリについての説明を記載したものです。
 開発環境、開発言語と細かく区別せず大きな枠で説明しています。解釈上意味不明なところがあると思います。

1.ログ出力

アイフォンアプリ,XCODEのログ出力
NSLog(@”DB is OK”);
DB is OK
と出力されます。

アンドロイド, JAVAのログ出力

画像

Log.d(“DB”, “OK”);
最初の引数はタグで、ログキャットのタグの列に表示されます。そして、第2引数はテキストの列に表示されます。
DB OK
として、列に別れて出力されます。こちらの方が見やすいかもしれません。

2.ボタンアクションコードの記載方法

XCODEの場合は、IBActionのメソッドに記載します。

JAVAの場合は、いくつかあります。
また、以下のコードは、少し、コードが長くなります。他にも、レイアウトxmlのボタンに記載してメソッドのように整理できる記載もあります。今回は書籍でよく見かけるコードにしました。
[c]
Button button;
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.ClickListerner(){
public void onClick(View v){
//here
}
});
[/c]
[c]
Button backButton;
backButton=(Button)findViewById(R.id.backButton);
backButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

}
});
[/c]
と、メソッドの引数の中に、メソッドがあるように記載します。

3.データベース SQLite3,CoreData

アイフォンでは、PCで事前に作成したSQLite3のファイルをそのまま利用して読み込みます。
書き込みは、CoreDataが利用できます。なお、CoreDataのエンティティ(テーブルみたいなもの)が増えた場合は、インストールしたアプリを削除しないとアプリが起動しない場合があります。

アンドロイド
データベースSQLite3のファイルを参照のみの利用でも、assetフォルダに保管し、使用するときにSQLite3ファイル自体を一旦コピーしてから利用します。
そして、assetフォルダに配置するファイルは1MB以下にする必要があるとのこと。大きすぎるファイルは要注意です。分割するか圧縮する必要があるようです。

参考サイト
[Android Programming] sqliteのDBファイルをPCでつくってandroidで使う – ipreachableの日記

既存のDBをAndroidで使えるようにする方法 – hentekoのdev日記

SQLiteからの結果をListViewに表示する

既存のsqliteファイルをAndroidに組み込む : ナカノ製作所開発備忘録

Y.A.M の 雑記帳: Android あらかじめ作成した SQLite database をアプリに取り込む

4.オブジェクト、ボタン、ラベル、テキストエディット

 XCODEでは、ボタン等をViewに配置し、ヘッダーファイルにドラッグし紐付けします。プログラムで使用しないオブジェクトは紐付けの必要はありません。
 
 JAVAでは、レイアウトのXMLで配置し、クラスに宣言、命令を記載します。
なお、異なるクラスでも同じレイアウトXMLを利用できます。

5.レイアウトVIewの他クラスの利用

アイフォン
オブジェクトを自由に好きなように配置できます。

アンドロイド
レイアウトのXMLに別のレイアウトXMLのオブジェクトを利用できる
レイアウトの自由度は低い。まるでウェブブラウザーで表示するhtmlファイルです。
ただし、様々な画像サイズのタブレットに対応できる柔軟性を持っていますが、デザイン性が低くなるかもしれません。

6.クラスをまたがって変数を共有する

XCODEでは、デリゲートを使用します。

JAVAでは、Applicationを継承したクラスを作ります。
Activityにまたがってグローバルに変数などのオブジェクトを共有するには

7.画像、音声ファイル

アイフォン
プロジェクトのどの場所でもよいですが、フォルダをプロジェクトに作ってわかりやすく配置します。
例えば、pic/back, number, buttonなど。

アンドロイド
resフォルダに保存し、音声ファイルはres/rawに保存します。

8.エミュレータ

アイフォン
アイフォン、iPadのエミュレータが起動します。
レティナ対応のiPadは大きすぎるので、縮小して表示します。特に難しい設定はありません。

アンドロイド
どのターゲットのエミュレータを起動するのか設定し実行します。
もし、エミュレータが実行しても、アプリが起動しない場合は、、、、、を選択します。
ここが一番わかりにくかったです。

9.文字列の取得

アンドロイド
strings.xmlの文字列を取得したいとき
getString(R.string.year) yearはH25年度として登録

10 レイアウトに配置されたTextViewに、文字配列を与えてListViewに表示する

アイフォン
テーブルビューを使用します。

アンドロイド
(1)は、レイアウトxmllistview_row.xmlに配置されたtextView1、textView2に、マップのquestion, answerの文字列をそれぞれ与えます。
そして、このコードにはありませんが、listview.xmlのListViewに表示させるものです。
(2)は、マップなしの単純なArrayListを、listview_row.xmlに配置されたtextView1に配置させるものです。

[c]
(1)SimpleAdapter simpleAdapter=new SimpleAdapter(this, globals.contactArrayList, R.layout.listview_row,new String[]{"question, answer"}, new int[]{R.id.textView1,R.id.textView2});

(2)adapterQuestionString=new ArrayAdapter<String>(this, R.layout.listview_row,R.id.listRowTextView,globals.arrayPartStrings);

[/c]

メタルギア ソリッド V グラウンド・ゼロズ 通常版(初回生産限定特典:本篇『MGSV:TPP』で使用可能なマザーベース スタッフDLC同梱&Amazon.co.jp限定特典:本篇『MGSV:TPP』で使用可能な特殊ダンボール箱DLC付き)プラットフォーム: PlayStation 4、発売予定日は2014年3月20日

Titan Fallタイタンフォール [オンラインコード] [ダウンロード]発売予定日時は2014年3月13日、ガンダムやバルキリー、装甲騎兵ボトムズみたいに人型ロボットに搭乗して敵を倒すゲーム、コックピットからのカメラ映像がリアリティがあり、まさに未来のロボットを操縦する感覚で遊べるゲーム

グラビアアイドル、清水みさと/恋して、みさと先生!


【GoPro HERO3+】LCDタッチ バックパック(リミテッドエディション)「ALCDB-303」在庫あり
「LCDタッチ バックパック」は、GoProカメラ用のLCDタッチスクリーンです。
カメラ背面に装着し、フレーミングや再生など、LCDスクリーンの利便性を提供します。
脱着式なので、不要な時は取り外してGoProカメラをできるだけ軽く小さくコンパクトにすることができます。

アイフォンアプリ開発X-CoDE,今日のエラー、Range or index out of bounds、NSMakeRangeで範囲外を指定でエラー、フォント巨大化

X-code,今日のエラー、Range or index out of bounds

(1)tableVIewでスライドすると強制終了する、substringWithRange:]: Range or index out of bounds

reason: ‘-[__NSCFString substringWithRange:]: Range or index out of bounds’
iPhoneでOKだったので、iPadで実行したら、強制終了となった。
ステップ実行しても特に配列数を越えているようには思えない。
取り合えず、アプリを一旦削除して再度実行。

それでもエラーでした。

調べると
NSMakeRangeで範囲外を指定いることが原因。実は、アイフォンは文字数を少なく設定していて、文字数を超えることはありませんでした。iPadはアイフォンの倍の文字数を表示できるので、大きめにNSMakeRangeを設定していました。
そこで、NSString strでstr.lengtで文字列の長さをとって、比較して、指定した値よりも小さいときは、その文字列の長さをNSMakeRangeに指定するようにしました。
>改善内容:文字プロパティの文字数を把握し、その文字数にあわせてレンジ幅を設定しました。

(2)Admob,textViewのフォントが指定サイズよりも大きくなり、次の表示で元のサイズに戻る
[textView setFont:[UIFont systemFontOfSize:12]];

or
UIFont *myFont = [UIFont fontWithName:@”HiraKakuProN-W3″size:12];
[myLabel setFont:myFont];

実施内容
フォントサイズを固定した、だめ。
個別にフォント指定した、だめ。
>ここまでだめ。
>改善せず、
以下もだめ
1.systemフォントをヒラギノ角ゴシックにした
2.ローカライズを日本Japaneseに変更。
このとき、元のローカライズが英語だったため、ストーリーボードが日本語フォルダに移動させられて、実行エラーとなった。そこで、Build PhasesのCopy Bundle ResourcesにStoryboardファイルを追加。フォルダがJAフォルダ(不正確)に入っている

すると、5回目以降でもフォントサイズが倍加することがなくなりました。これでしばらく様子を見ます。

アイフォンは、ローカライズ英語のままで、テキストビューをヒラギノにした
iPadは、ローカライズ日本語で、テキストビューをヒラギノにした

これで、アイフォンもフォントサイズが倍化しなければ、フォントはヒラギノにすれば、テキストビューが倍加することはないということになります。ローカライズを日本語にしなくてもよいと判断できるでしょう。
その後、
やっぱり、フォントが倍化してしまいました。

もう一度見直してみます。

3.個別にNSAttributedStringに対してもフォントサイズを固定するようにしました。
>原因がわかりました。ADMOBが表示するテキストに反応して、フォントが大きくなっているようです。
つまり画像の広告の場合は、フォントが大きくなりませんが、ADMOBでテキストの媒体が表示されるとフォント大きくなりました。
ADMOBの表示順序を変えて、フォントが影響を受けないようにしました。
>でも、カラーを指定しないフォントは影響を受けてフォントが大きくなりました。そして、カラーを指定したフォントは影響を受けていません。
それで、カラーを指定することにしました。しかし、blackColorという指定でした。
RGBで指定してみます。
>色を与えてもだめです。

つぎは、フォントをsystemFontにしてみます。
>これもだめでした。

>いっそのこと、フォントサイズの指定を一部解除しました。
数カ所にフォントサイズはありますが、なんとこれでフォントサイズが巨大化することはなくなりました。
またしばらく様子をみることにします。
無理矢理、再設定してみることにしました。

[c]
-(void)viewWillAppear:(BOOL)animated{
NSAttributedString *tmp=self.questionText.attributedText;
NSMutableAttributedString *attrStr=[[NSMutableAttributedString alloc]initWithAttributedString:tmp];
[attrStr addAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} range:NSMakeRange(0, attrStr.length)];
[self.questionText setFont:[UIFont systemFontOfSize:12]];//
}
[/c]

>まだフォントが大きくなってしまいます。頻度は10回に1回程度。
まだまだなにか改善が必要です。


【送料無料】カシオEXILIM Hi-ZOOM EX-H60(ブラック) [EXH60]
薄型でありながらホールド感に優れたコンパクトボディに、広角25mm・光学24倍ズームレンズと大画面3.0型モニター、CCDシフト方式の手ブレ補正機構を搭載。広大な風景や狭い室内、また、被写体に近づけない場所でも、広角・高倍率レンズを活かして幅広いシーンで撮影を楽しめる有効画素数1610万画素のデジタルカメラです。
手ブレ補正が進化しました。ハーフロック(シャッター半押し)中の手ブレ補正の継続動作により、従来機種『EX-H50』で生じていた小刻みなブレが抑制されるようになりました(継続動作:最大30秒)。また、動画記録時の手ブレ補正にも対応するようになりました。


WG-3 ホワイトブル-【税込】 ペンタックス デジタルカメラ「Optio WG-3」(ホワイトブルー)在庫あり
本体の気密性をさらに強化することで、水深14m(従来は水深12mまで)で連続2時間の水中使用に耐える高い防水性能(IPX8、JIS保護等級8相当に準拠)を実現しています。
さらに、2m(従来は1.5mまで)からの耐落下衝撃性能注1やホコリに強いIP6X(JIS保護等級6)相当の防塵性能、マイナス10℃でも動作が可能な耐寒構造
100kgf(重量キログラム)までの重さに耐える耐荷重構造などを備え、過酷なアウトドア環境下での使用に耐えるタフネスモデルに仕上がっています。
センサーシフト方式の“SR(Shake Reduction)”と電子式の両方を使用して、より効果的に手ぶれを軽減できる“デュアル手ぶれ補正”を搭載しています。


【送料無料】ソニー 7インチ デジタルフォトフレーム DPF-D720 WI ホワイトスワロフスキー
7型16:10クリアフォトWVGA液晶クリスタル&ホワイト
■動画再生対応(MotionJPEG/MP3)
■マルチカードスロット搭載
■内蔵メモリー2GB搭載
■液晶サイズ:7インチ
■液晶パネル総ドット数(有効エリア):1,152,000ドット(987,000ドット)
■アスペクト比:16:10


東芝 TOSHIBA SDHCカード 32GB Class10 SDカード 32GB クラス10 SDHC :【お一人様3点まで】 東…在庫あり
超高速タイプのSDメモリカード/SDHCメモリカードはデータ転送速度は最大で30MB/秒。SDスピードクラス最高のClass10です。データ転送速度が速いカードをお探しの方に。

X-C0DE,今日のエラー、setValue:forUndefinedKey、[GADObjectPrivate changeState:]、does not have an identifier

X-C0DE,今日のエラー、setValue:forUndefinedKey、[GADObjectPrivate changeState:]、does not have an identifier

(1)No visible @interface for ‘PickerView2Controller’ declares the selector ‘loadSql:tableName:jamleNumber:outPutArray:’

ヘッダーに宣言していませんでした。

(2)
Terminating app due to uncaught exception ‘NSUnknownKeyException’, reason: ‘[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key backImage.’

@propertyとストーリーボードのオブジェクトが紐付けされていませんでした。
名称を変更すると、ヘッダーにドラッグしたプロパティは自動では更新されませんので、再度紐付けが必要になります。

(3)Admob [gadbanner_ loadRequest:request]; でエラー
Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[GADObjectPrivate changeState:]: unrecognized selector sent to instance 0xbe16c70’

>-ObjC to the Other Linker Flags of your application target’s build setting:
X-CODEの設定がされていません。何度も忘れてしまいます。

(4)UIPickerViewの文字の行間、が10行くらい空いてしまう。
画像。
次の行との間に10行くらい改行はいったようにみえるピッカー、本当は次の行が表示されていなければならないのに、隙間空間が異様に挿入されたようになってしました。

前回作成したPJと同じように作成していて変な行間が新規に作成PJで表示されてしまいました。
同じ、コードを書いているはずなのに???

原因は不明。
対策:同じコードを書いているつもりで何かが抜けているかもしれません。正常に表示されているコードを丸丸コピーしてみます。

>解決しました。
一応、再度UIPIKCERオブジェクトを削除して新規に作成しましたが、同じ現象。ということで、コードの機才が悪いと言うことで、コピーしました。
>原因は不明です。

(5)ワーニング ストーリーボード
warning: Unsupported Configuration: Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier:.

>解決、ストーリーボードの各種Viewコントーラーにstoryboard IDを設定するとワーニングが解消されます。

x-code,ストーリーボード、segueセグウェイでの画面遷移、プログラムコードでの画面遷移

x-code,ストーリーボード、segueセグウェイでの画面遷移、プログラムコードでの画面遷移
(一部間違った解釈、理解をしているところがあります。随時、修正、変更、更新します。)

<関連記事>
X-CODEストーリーボード、セグウェイ関連記事

エラー対処記事X-Code今日のエラーの対処、Navigationナビゲーションコントローラーのエラー、 unrecognized selector sent to instance

リンクメモ情報収集メモ UITableVIew、ストーリーボード関連|・UIPIckerViewの情報まとめ|・その他、カメラ、色|Admob view|・CoreData、データベース検索

ストーリーボードを使用するのは便利ですが、作り込むとあれこれと条件を入れて判定させてから画面を移動させたいときがあります。
その場合、初心者向けの書籍に書いてあることでは役に立たないことがありました。

1.ボタンを配置して、そのボタンからctrキーをしてつないで次の画面viewへ移動する方法

 IBActionになにもコードを記述しなくても、ボタンを押すと半強制的に画面が移動します。
preparesegueで条件文を書くことができます。
 この利点は、とにかく、ボタンを押したら、画面遷移させたいときにすぐに利用できます。

2.ボタンを配置するけれど、Viewの下の黒枠のところのアイコンからctrキーをしてつないで次の画面viewへ移動する方法

画像 storyboard_link.png
storyboad_link

 ボタンのIBActionに必要なコード例えば、
 [self performSegueWithIdentifier:@”mySegue” sender:self];
 を記載して、移動します。@”mySegue” は移動先のidenfierになります。ナビゲーションコントローラーがあっても大丈夫です。
 
 StoryBoardで画面遷移、画面間の値の受け渡し(とデリゲート)を参考にしました。
 
 元に戻るときは
 [self dismissModalViewControllerAnimated:YES];
 この場合の利点は、移動する前にある種の条件を記載して、その条件に合わなければ、移動しないようにできます。
 例えば、画面上のあるスイッチを切り替えていなかったら、アラートを表示させたり、切り替えていれば、アラートを表示させずに、画面を移動したりできます。
 1の方法だと、移動させたくなくても移動しちゃいます。
 

3.プログラムで直接画面を移動する

 従来からの方法で、セグウェイを使用せずに移動できます。セグウェイを利用するときは2の方法になります。

 
 

<ストーリーボード、セグウェイの利用上の注意点、画面遷移>

 主に、ナビゲーションコントロールを使った場合の利用上の注意点です。
 ナビゲーションコントロールやタブバーを使うときの画面展開、画面の配置に注意が必要です。
 原則として線形の一直線上のシンプルな画面を心がけて、Viewを作るようにしましょう。
 

・原則、ループとなるような画面遷移はできない。

 ストーリボードの画面遷移は、線形の一直線上の動きです。A-B-C-Dと移動したら、D-C-B-Aと逆に戻ります。そのため、DとBの間でループするようにつなぐとナビゲーションコントローラーの表示が正常に行われなくなります。
 ただし、
StoryboardのUnwind Segueの使い方 | Developers.IO
 に記載のUnwind Segueを使うことにより、途中の画面に戻ることができます。
 つまり、DからBに、またはDからAに戻ることができます。この場合、かつて移動して表示させた状態が保持されています。DからAに戻るのと同じような状態で一気にバックジャンプができます。この保持されている状態が、気にくわないというかリセットして欲しいと思っているときは他の方法を考える必要があります。
 

・ナビゲーションコントロールを使って分岐は複数できるけれど、集結はできない

 Viewから複数のViewへ分岐できます。でも、複数の分岐側から、ひとつのViewへ集中的に結合すると、ナビゲーションコントロールバーが正常に表示されない恐れがあります。
 
 要約すると、複雑な画面遷移、移動をする場合は、ナビゲーションコントロールを使わないか、いっそのこと、ストーリーボードを使わずにアプリを作った方が良いのかもしれません。
 画面でパーツを自由に配置して、画面を作って、また画面を作ってと好きなことがことができる反面、自由度が思ったよりも低いのです。
 今後のバージョンアップでループの画面遷移が可能になることを望みます。
 

/*テキストビューの横幅320、高さをテキストの大きさに合わせて調整する。*/
[textView setFrame:CGRectMake(0, 0, 320, textView.contentSize.height)];
全体の高さ

1
[[UIScreen mainScreen] bounds].size.height

ステータスバーの高さ
[[UIApplication sharedApplication] statusBarFrame].size.height

ナビゲーションコントローラーのナビゲーションバーの高さ
self.navigationController.navigationBar.frame.size.height


結婚指輪 マリッジリング  ,
刻印(文字彫り無料) PILOT(パイロット) ブランド(True Love(トゥルーラブ))
在庫あり
日付、名前の刻印を無料サービス。サイズ交換可能です。サイズがわからない時はリングゲージを無料でお貸しします。
ゴールドとプラチナとのコンビネーションがお洒落です。
センターのダイヤがきらりと華やかさも添えています。


エンポリオアルマーニ腕時計[EMPORIO ARMANI]ARMANI-AR0585
材質:ステンレススチール
サイズ:約縦43mm×横43mm

画像韃靼そば茶【国産・無農薬】北海道産のダッタンそば茶 急須で飲まないでください マグカップで飲みながら ソバの実も必ず食べてください

画像北海道スープカレー[北海道お土産]在庫あり

■商品詳細情報商品名北海道スープカレー 380g内容量具材180g / スープ200g

★アイフォンアプリの開発XCode今日のエラーの対処、Navigationナビゲーションコントローラーのエラー、 unrecognized selector sent to instance というエラーが多くて対処中、CoreDataによるデータベースはプロジェクトでテンプレートを指定して作成する

アイフォンアプリの開発で今日のエラー、ナビゲーションコントローラーのエラー、 unrecognized selector sent to instance というエラーが多くて対処中

iPhoneアプリ開発中はさまざまなエラーが発生します。できるだけ、その都度、どうやったのかをメモしています。
そうすることで、すぐにエラーに対処でき、悩まずに済みますし、開発期間を短縮できるし、ストレスも小さくできます。

記憶が薄れそうなので、CoreDataコアデータ、データベースについて記載すると、コアデータを使用したアプリは、プロジェクトで先にテンプレートを指定したほうが開発が楽になります。他のテンプレートを指定したあとで、CoreDataの記載をするとエラーが多発してしまい時間がかかり、結局、コアデータのテンプレートを使用して開発しました。(2013年12月10日追記)

(1)NSMutableArrayの配列が正常に取得できない、範囲外の配列を取得しようとした

プロパティでstrongではなく、weakにしていた。
weakをstrongにして、配列のオブジェクトの値を正常に取得できました。

・NSMutableArrayのエラー、初期化を忘れているとコンパイルエラーがなくても、間違っている。初期化忘れがないかをチェックしましょう。
[[NSMutableArray alloc]init];

(2)intをNSNumberに変換したい

int n=10;
NSNumber *num=[NSNumber numberWithInt:n];

NSNumberをintとして扱うときは
n=[num intValue];
とします。

(3)ナビゲーションコントローラーのエラー

‘NSInvalidArgumentException’, reason: ‘-[ResultViewController viewControllers]: unrecognized selector sent to instance 0x11a5e950’

ナビゲーションコントローラーがないのに、ナビゲーションコントーラー用のコードを書いていました。
ナビ−ゲーションコントローラーがあるときの値を渡すとき
[c]
UINavigationController *navCon=segue.destinationViewController;
ResultViewController *rv=[navCon.viewControllers objectAtIndex:0];
rv.youSelectNumber=[NSNumber numberWithInt:iselectAnswer];
[/c]

[c]
ResultViewController *rv=segue.destinationViewController;
rv.youSelectNumber=[NSNumber numberWithInt:iselectAnswer];
[/c]
ナビゲーションコントローラーがないときはシンプルです。

(4)admobが表示されない[GADObjectPrivate changeState:]: unrecognized selector sent to instance

というエラーは、ビルドセッティングを入れれよいだけでした。
以前作業したときはあったような気がしましたが、もしかすると、X-CODEのバージョンアップで解除されてしまった?

BuildSetting->Linking->Other Linker Flags
-ObjC
をRelease and Debugに入れました。
とりあえず、OKですが、
実はテーブルビューでスクロールをすると広告がセル一緒に移動してしまうのです。
ということはテーブルビューではAdmob広告は使えないか、他のテーブルで設定しなければなりません。

(5)Core Data、エンティティエラー、CoreDataによるデータベースはプロジェクトで指定して作成する

reason: ‘+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name

シングルビューでプロジェクトを作成し、後で、coreDataを追加したものです。
エンティティネームが間違っているかと思いましたが、正しい。
後入れ、CoreDataは結構面倒ですね。だからみんなさきに指定して作るんですね。
とりあえず、さきにEmptyプロジェクトにして作り直してみます。

>未解決ですが、解決としては、Emptyプロジェクトにして作り直したほうが早い

(5-2)再現性あり。

Emptyで作り直して、問題なかったのですが、また再現しました。
*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’,
reason: ‘+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name

まず、アプリを削除して、クリーンを実行しました。
その後、次の5−3のエラーが発生

(5−3)

reason: ‘*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array’
データをリセットして、初期状態になったので、
配列数が0になったと思います。
配列数が0のときに、配列の値を取得しないようにしました。
またエラーが発生したので、よくみたら
AppDelegateしたプロパティを
self.appとしました。
グローバル変数としたものを
@property(strong,nonatomic)NSNumber *nowNumber;//NSInteger
をweakにしたら、エラーが表示されず。
@property(weak,nonatomic)NSNumber *nowNumber;//NSInteger
しかし、エラーにならずとも、値がリセットされていました。値なしです。
そこで、retainにしてみました。
するとOKでした。
どうやら、AppDelegateのグローバル変数はretainが良さそうです。

そのほか、managedObjectContextが作成されていないみたいだったので、AppDelegate.h,mに設定しました。しかし、これでもだめ。
やはり、AppDelegateしたプロパティを
self.appとしました。OKです。

(6) nil エラー

reason: ‘Cannot create an NSPersistentStoreCoordinator with a nil model’

現在のビュークラスから次のビュークラスへ移動のときに、次のビュークラスでエラーがあって
呼び込めていないことがありました。そのため、次のクラスの怪しい箇所をコメントにしました。

(7)reason: ‘Pushing a navigation controller is not supported’

pushがだめならとmodalに変更しました。

なお、このnot supportedの場合、ナビコントローラーを交互に入れていたので(必ず一組で作成)、その1組のうちのナビコントローラーを削除して、組み直すとpushでも可能になります。
ここら辺がやってみないとわからないトライアンドエラーです。

(7−2)

Property implementation must have its declaration in interface ‘ResultViewController’
.mで、@synthesizeのところで改行を入れたから、OKでした。なぜ?

(8)Core Dataエラー

Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 “The operation couldn’t be completed. (Cocoa error 134100.)

新しく、CoreDataにエンティティを追加したり、アトリビュートを追加したときに実行するとエラーが起きます。
1.クリーンを実行して
2.この場合は、シミュレータのアプリを削除すればよいみたいです。
なお登録したデータが消えるかもしれないので、すでに登録して必要なデータは、保持した方がよいでしょう。テスト用でも面倒だったりするので。

(9)タブバーでのワーニングログ、

動作について今のところ支障がない。
Unknown class AAAViewCotroller in Interface Builder file.
タブバーを使用して、画面を切り替えるとログが表示、実行に問題はないけど、ちょっとログがでてしまうのが気になるところ。
>未解決、重要性が低い

(9)admobエラー、リンカーエラー

reason: ‘-[GADObjectPrivate changeState:]:
>X-CODEの環境設定で、Other Linker Flagsに -ObjCを追加

(10)

reason: ‘Unacceptable type of value for attribute: property = “number”; desired type = NSNumber; given type = __NSCFString; value = mas**.’

>未解決

(11)map の検索入力で半角英を入力したときにエラー

-[MapViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xac6d150
*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[MapViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xac6d150’

>- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
を追加しました。これは、サーチした後にテーブルビューが表示されるものです。
書籍には記載されていないもので、記載ミスでしょうか。

(12)画面遷移でのエラー

-[NSURLResponse intValue]: unrecognized selector sent to instance 0xac65570
*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[NSURLResponse intValue]: unrecognized selector sent to instance 0xac65570’

ボタンをタップして次の画面に移動しないときがあって、必ず発生するエラーではない。3回に1回程度発生するという変なエラー。
NSURLResponse intValueを設定した覚えはない。ということは、それを使ってるメソッドか何かがどこかにあって、それが使っていると言うことですかね?

このように、必ず発生しないときは、発生手順をメモしながら原因を究明していきます。
環境は、ストーリーボード、coreDataを使用している。

>プロパティ変数のretainで解決しました。weakにして、retainでエラーがなくなりました。(5−3)での記載が詳細になります。

(13)NSDateはnilで判定

NSDate関連のエラーで、NSDateがnilでした。アウトプットはnullとでますが、
NSDate *date;
if(date==nil)
で判定します。

iPad 、アイフォンのストーリボードとiPadのストーリーボードの共存

アイフォンとiPadで同じパーツを使用するときで、同じクラスを使用するとき、ヘッダーファイルのプロパティをiPadのストーリーボードのパーツに紐付けします。
これだけで良いのです。
新しく、iPadのストーリーボードからヘッダーファイルへ紐付けする必要はありません。
つまり、すでに既存のヘッダーファイルのプロパティを利用できるのです。
これは便利です。アイフォンアプリとiPadアプリの2つのアプリを作成時間は意外にも時間がかからないのかもしれません。

(1)reason: ‘-[__NSCFString substringWithRange:]: Range or index out of bounds’

範囲外の値を入力していたので、範囲を小さくしました。

(2)reason:‘[ setValue:forUndefinedKey:]: this class is not key value coding-compliant

reason: ‘[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key imageViewSmall_iPad.’

アイフォンのストーリーボードからiPadのストーリーボードにコピペして、それを共通のビュークラスに紐付けしました。
そして、この紐付けが不要なのに、そのままにしていました。
shows connections inspectorで、びっくりマークになっている箇所を削除しましょう。
アイフォンと同じパーツを使うのであれば、ヘッダーファイルからストーリーボードのiPadのパーツへ紐づければ良いのです。ヘッダーファイルの該当するプロパティの左にある二重丸からiPadのストーリーボードのパーツへドラッグします。
この場合は、ヘッダーファイルからストーリーボードへつなぎます。いつものストーリーボードからヘッダーファイルへの向きと異なります。
たったこれだけです。iPadも意外と楽ちんです。

開発したアプリ、弁理士短答試験過去問題記録ノートの紹介

アプリ紹介リンク

このようにして開発したアプリが弁理士短答試験過去問題記録ノートです。
iOS7 iPhoneアプリ(4作目)申請からリリース状況のまとめ 2013年9月、弁理士短答試験過去問題記録ノート
アドモブの広告をつけています。

他のフレームワークについて

関連リンク

Unityでの開発状況2014年Unity4.5.5

アイフォンアプリ、情報収集メモ UITableVIew、ストーリーボード関連|・UIPIckerViewの情報まとめ|・その他、カメラ、色|Admob view|・CoreData、データベース検索

アイフォンアプリ開発で参考にしたサイトのリンクです。また、お世話になると思います。
 似たような内容が掲載されているサイトが多い中から、見やすく、画像を使用して丁寧に解説されているサイトを掲載しました。
特に画像とソースコードが掲載されているサイトは参考になります。自分も見習いたいですが、画像を使用した解説まで手が届きません。

・UITableVIew、ストーリーボード関連
UITableVIewで、下のセルに到達すると、次の読み込みを表示する

Objective-C – UITableViewのページング(最下部セルまでスクロールしたら次の○件読み込んで表示)方法 – Qiita [キータ]

UITableViewでページング処理をする。 – 24/7 twenty-four seven

UITableViewのスクロール位置をView再読み込み時に復帰する方法 – へびにっき

Objective-C – UITableViewを行単位で更新する – Qiita [キータ]

iPhoneプログラミング: Table Viewを使ってデータを表示する – インターネットコム

UITableViewをスクロールしたときに、一番下のセルがすべて出るよう吸着自動スクロールさせる方法 | ssdkfk

StoryBoardで画面遷移、画面間の値の受け渡し(とデリゲート) – 青春B■雑記blog‐青酸カリ カラメルシロップ味‐
>画面遷移をするときに、ボタンが押されると勝手に画面移動しないパターンで作成する方法が記載されています。
ボタンから次の画面へつなぐと、ボタンをクリックして有無を言わさずに強制移動す。この標準的な方法では、ある条件の元で画面を遷移させたい用途による処理が使えません。
つまり、ボタンを押して、ある値が1だったら移動させ、ある値が0のときは、アラートを表示させて、現在の画面のママにしたいという処理をしたい場合です。
preparesegueでも強制移動なので、このメソッドがあるなしにボタンをタップすると強制的に画面を移動させられてしまいます。
ナビゲーションコントローラーがあっても正常にバーが表示されました。

StoryBoardで画面遷移、画面間の値の受け渡し(とデリゲート)
– 青春B■雑記blog‐青酸カリ カラメルシロップ味‐

CoreTextを使った軽量TextView – LTCoreText | Cocoaの日々情報局

Table ViewにSearch機能を加えましょう | Ray Wenderlich

[Obj-C]ストーリーボード, IBを使用せずにWindowとViewを表示してアプリを作成する方法 | Maccle

iPhone/Androidアプリ開発アレコレ » NSSortDescriptor
>[obj-c][/obj-c]NSDictionaryを含むNSArrayのソート

[iPhone] UITableView を所定の位置までスクロールさせる | Sun Limited Mt.

StoryboardのUnwind Segueの使い方 | Developers.IO
>戻りを変えるストーリーボード


・UIPIckerViewの情報まとめ
UIPickerViewを複数表示、下から表示させるアニメーション

UIPickerView
iPhoneプログラミング・・・のただのメモ。 

初心者が進めるiphoneアプリ開発 PickerViewの使い方(UIPickerView)

[iPhone 開発メモ] UIPickerView の使用方法 | Sun Limited Mt.

ピッカービュー(UIPickerView)の使い方 – あらきんぐのiPhoneアプリ開発ブログ

UIPickerViewで項目選択UIを使ってみる|ゆぅさんのiPhone開発技術関連ブログ

・複数のUIPICKERVIEW
絶対に挫折しないiPhoneアプリ開発入門Part.27 ~ひとつのUIViewControllerに複数のUIPickerView,UITextField~
– 三千世界のインターネットで烏と共に

iOS – UIPickerViewを下から動的に表示する方法 | 田村倉庫

UIPickerViewのポップアップ日々、学びつづける

[iPhone] 下からニュッと出てくるDatePicker | BuGcloUd.com

【文法】UISegmentedControlについて – creativi.tea

iPhoneプログラミング: Table Viewを使ってデータを表示する – インターネットコム

GorozoSoft: UITableViewControllerからの脱却

・その他、カメラ、色
【objective-c】文字表現の幅を広げる | Septeni Engineers’ Blog | セプテーニ エンジニアブログ
>NSAttributedStringを用意する

http://lab.dolice.net/blog/2013/05/29/objc-ui-button-basic/
UIButtonの基本的な使い方をまとめました – Dolice Lab

target=_blank>http://www.sirochro.com/note/objc-uicolor-rgb/
>UICOLOR表

iPhoneのカメラの起動・保存 : てるてる坊主

・CoreData、データベース検索

CoreDataで日本語検索が上手くいかない | RuputerFan

6.11 あいまい検索


Admob view

【iPhone】AdMobの広告を表示する(2)

xcode,Storyboard使用時に AppDelegate 内から ViewController を参照する方法
>とてもわかりやすい。ただ、途中でコードの説明がなくっている。でもサンプルソースのダウンロードがある。

cocos2dにAdWhirlを実装してiAdとAdMobを切り替える

(1)3Dアプリ製作Unity作業の注意点、C#、Blenderブレンダーとの連携について|(1)アイフォンアプリ製作に役立つユーチューブ動画、iOSストーリーボードUIViewControllerなど

(1)アイフォンアプリ製作に役立つユーチューブ動画、iOSストーリーボードUIViewControllerなど

**

3Dアプリ製作Unity作業の注意点、C#、Blenderブレンダーとの連携について

現在、アイフォンアプリ、アンドロイドアプリ用のスマートフォンゲームアプリを製作中です。
7月に作業に取りかかりました。はじめてのUnityですので、いろいろと覚えることがありすぎて大変です。
 特に、Unityは3Dオブジェクトファイル、例えばブレンダーのファイルやFBXファイルを扱えることから、3Dポリゴンオブジェクトを作成できる3Dソフトとの連携が可能です。
 つまり、3Dソフトブレンダー、MAYA、LIGHTWAVEなどで作成した3DポリゴンをUnityで表示させてゲームとして楽しむことができます。
 
 しかし、覚えること、設定、パラメータなどが多くて忘れがちです。そこで、約1ヶ月経過したこともあり、ここで、最初に躓いたところをメモしていきます。
 
・C#、JAVASCRIPTについて
JAVASCRIPTとC#は、ほぼ構成が似ているので、ホームページや関連書籍を参考にできます。
また、JAVASCRIPTとC#の変換ウェブサービス(無料)もあります。

・C#について

#include,#importを記述しなくても同じプロジェクト内のスクリプトは利用可能。
MonoBehaviourを継承しないクラスも作成できます。ただし、Unity独自のコマンドは利用できません。
using System.Collections.Generic; でstdのListが利用できます。
MonoBehaviourを継承するスクリプトはAddComponentが必要です。
[c]
public MyDialog dialog;
//dialog=new MyDialog();//not work
dialog=gameObject.AddComponent<MyDialog>();//MyDialog.cs
[/c]

GUI系のオブジェクトの扱いは、座標がスクリーン座標となります。3D空間ではありませんので、はじめは、あれ?になりますが、ああそうなのかそういうことねとなります。

Inspectorにパブリック変数を表示させたくないときは
[HideInInspector]
を記述します。すでに変数を与えてある場合や外部から変数をあてる必要がないときに使用します。

・ブレンダーとUnityの連携、オブジェクトの挿入

ブレンダーで作成したオブジェクトの大きさを1くらいとすると、Unityで表示させるときは、スケールを約30ー50倍くらいに拡大する必要があります。カメラ位置0, 10, -13の場合で、Projection:Perspectiveです。
また、横面にするためには、Y軸で90度、正面を見せるためにY軸180度回転させる必要があります。

UVをブレンダーで設定し、テクスチャを設定後、FBXに出力し、Unityにインポートするとき画像のリンクが解除されます(パスが不明となるため)ので、再度Unityで画像を設定する必要があります。画像を設定するだけです。UnityでUVを設定し直すようなことはありません。まあ、Unityにはポリゴンを作成する機能がないので、Unity自体でUVを作ることはできないので当たり前と言えば当たり前ですが。

出力のときは不要なカメラ、オブジェクトが挿入されないように、出力の時に、設定をします。

テクスチャは、オブジェクトで異なる設定で使いたい場合は、重複のテクスチャ、サーフェース名は使用しないこと。特に、名称なしやデフォルトは避けるようにしてください。重複のサーフェース名を使用すると同じ色になったり、想定した色と異なります。後の修正作業が面倒です。

・Unityに3Dオブジェクトを表示させて思ったこと

意外に画面がきれいに表示されて折らず、ブロックひずみになっていると思いました。

・今後のUnityの作業

ブレンダーでボーンを設定し、アニメーションを設定した後に、Unityにインポートしてアニメーションさせる
アニメーションをプログラムで制御する

参考リンク

http://wiki.unity3d.com/index.php/CSharpMessenger_Extended以前のリンク先が変わっていました。

アイフォンアプリ製作に役立つユーチューブ動画、ストーリーボードUIViewControllerなど

アイフォンアプリで、テーブルのリストを選択して、ストーリボードの遷移を学習できます。
短いもので30分、長いもので1時間程度の学習時間になります。動画を見ながら、X-CODEでアプリを作りながら作業できるようにすれば理解も早いと思います。大きなディスプレイかマルチディスプレイの環境があるとよいです。

 英語ですが、コードの入力からわかるので動画の通りに進めば、アプリが完成します。
いくつかの書籍を買ってユーチューブの内容を比較をすると、書籍の内容は、動画の説明の5分から10分程度にあたり、ユーチューブの動画の内容の濃さに驚きます。著者の実力を攻めているのではなくて、文字と静止ベースと出版界の事情の限界なのでしょう。
文字や画像が多くなると著者の負担が大きく、ページ数が増えれば書籍の金額高くなり、売れなくなるわけです。内容が濃ければ濃いほど読者は理解が深まりますが、実際はページ数が多くなり、本が重く検索できず、金額が高いという残念な結果になるのでしょう。
 書籍、紙による教育、指導、教示の限界というものでしょうか。
動画も実際の講義やセミナーに比べて、緊張感や情報量、その場の雰囲気などに劣りますが、それでも十分学習できる内容でした。

(1)テーブルビューで項目を削除したときに、エラーとなる場合の例です。

ViewController.m
[c]
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if (editingStyle==UITableViewCellEditingStyleDelete) {
Contact *delegatedContact=[self.contacts objectAtIndex:indexPath.row];
NSManagedObjectContext *moc=self.delegate.managedObjectContext;
[moc deleteObject:delegatedContact];
NSError *error;
if (![moc save:&error]) {
NSLog(@"error");
}

//もしこの状態で項目を削除したときにエラーがでたら [self loadData]の機能が足らないことになります。
[self loadData];//これがないと項目を削除したときにエラーがとなります。
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

}
}
[/c]

関数
[c]
-(void)loadData{
NSManagedObjectContext *moc=self.delegate.managedObjectContext;
NSFetchRequest *fr=[[NSFetchRequest alloc]initWithEntityName:@"Contact"];
NSError *error;
self.contacts=[moc executeFetchRequest:fr error:&error];

}
[/c]

(2)UITableViewCell *cellのエラーが多い、forIndexPath:indexPathを削除する

2012年くらいのXC0DEのユーチューブ動画や書籍には、forIndexPath:indexPathが記載されていません。新しいバージョンのXCODEではforIndexPath:indexPathが追加されていて、エラーになることがあります。
[c]

– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
//アプリ実行をして不明なエラーの時は、forIndexPath:indexPathを削除する
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
// Configure the cell..
return cell;
}

[/c]

・その他、エラーの対処

this class is not key value coding-compliant for the key cancelButtonPressed.’
これは、A画面からB画面に遷移するとき、遷移先のB画面にあるcancelButtonPressedの設定が間違っているために発生したエラーです。
A画面でボタンをタップしたときに、強制終了するので、A画面での問題かと思いましたが、A画面からB画面に移動する直前でエラーとなりました。

対処:
cancelButtonPressedが間違ってい設定されていた(画面上でびっくりマークが表示されている)部分を削除しました。

原因:
紐付けを行って、取り消しをコード上でしてもXlib上ではまだゴミが残っていたみたいです。そのため、びっくりマークが表示されていました。
慣れていないと何がどうなっているのかわからないエラーでした。

使い回しのできるメソッド、deleteData:(NSString*)deleteQueryで効率よく見やすく処理している記載方法

[c]
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if (editingStyle==UITableViewCellEditingStyleDelete) {
Person *p=[arrayOfPerson objectAtIndex:indexPath.row];

[self deleteData:[NSString stringWithFormat:@"DELETE from PERSONS where NAMA is ‘%s’",[p.name UTF8String]]];

[arrayOfPerson removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
-(void)deleteData:(NSString*)deleteQuery{
char *error;
if (sqlite3_exec(personDB, [deleteQuery UTF8String], NULL, NULL, &error)) {
NSLog(@"OK");
}
}
[/c]

iOS Development: Storyboards and UITableViews (Part 1 of 2)

評価:星4つ
ストーリーボード、UITableViewのコード説明、リストの項目の追加、削除、変更までが説明されていて、非常に役に立つ講座です。アイフォン関連の初心者向け書籍に書いてある以上のことが学べます。一般に売られている書籍の内容の3倍以上の内容の濃さがあります。書籍の内容は、導入部だけで、そこから学ぶことは非常に少ないのです。実際は、そこからどうやって、発展させていくのかと言うことなのですが、実際のアプリ製作の約立つ内容にまでは踏み込まれていません。書籍では、単に、画面にリストを表示させておしまいというのが多い中で、この動画はリストに表示させて追加、削除まで説明されています。

iOS Development: Storyboards and UITableViews (Part 2 of 2)


iOS Development: Core Data

評価:星3つ
50分と1時間7分のところで、うまく動作しないところがありました。コンパイルエラーがなくて、リストを削除するとエラー、動作停止になります。
今の実力では直せません。
コメントにも同様の記載があるので、他の人も戸惑っているところがあるみたいです。
他の動画を見ながら、修正したいと思います。

・Xcode 4.6 Tutorial – UITableView with Search Bar (Part 1)

画像1
評価:星3つ
UITableViewのコードが説明されており、検索についても説明。なお、私が実際にアプリを作ると検索が上手く動作しませんでした。リストを選択したり、リストを検索する方法が学習できます。
どこが悪かったのかを後日検討したいと思います。

Xcode 4.6 Tutorial – UITableView with Search Bar (Part 2)

iPhoneアプリ(3作目)申請からリジェクト、修正、リリース状況のまとめ 2013年7月、どんぐり合戦

iPhoneアプリ(3作目)申請からリジェクト、修正、リリース状況のまとめ 2013年7月、どんぐり合戦

・経緯

 7月10日 申請
 7月17日 リジェクト
 7月18日 修正
 7月24日 予定だった24日のリリース日を7月26日に変更
 7月25日 認可
 7月26日 リリース
 

・7月10日申請

App Storeへ7月10日午後1時20分頃申請完了、3つめのアイフォンアプリ
「今回のApp Storeへの申請でのエラーは

(1)WEBのiTunesコネクトでDistribution証明書を作成し、ダウンロードした後、

ダブルクリックして、XCODEを起動し、ビルド設定をコピーして、リリース状態にしたあと、
次に、Product->Archiveをしたいができない。これができればオーガナイザが起動します。
それが、Archiveがグレーになっていて選択できません。
なんのことはない、ios Deviceにしてできました。このとき実機が接続されている必要はありません。実機なしでも申請処理可能。

(2)次に、Bundle IDのところでした。

オーガナイザでValidateを押して進行中にエラーが表示されました。

com.enjoygoodtown.aaaa
とするときのaaaaだけを入力すれば良かったみたいですが。
com.enjoygoodtown.aaaa
をそのまま登録したら、
com.enjoygoodtown.com.enjoygoodtown.aaaa
と表示されて、オーガナイザのValidateチェックでエラーとなりました。

そこで、再度iTunesコネクトで入力を
aaaa
としました。
画面上に、com.enjoygoodtown.aaaaと表示されていたので、それをそのままみて確認すれば良かっただけでした。」

3作目のアイフォンアプリ申請でリジェクトされました。Retina判別が不十分

(1)リジェクト対応:3作目のアイフォンアプリ申請でリジェクトされました。Retina判別が不十分
「リジェクト理由:iPad,iPhone5で画像が正常に表示されていない(意訳と原因の解釈を追加して理由を記載しています。)

原因:iPadにおけるレティナ、非レティナでの判別処理が不足。そのために、非レティナの状態で、レティナ用の画像が表示され、画像が正常に表示されていませんでした。画像の一部しか表示されない状態。

対応:iPadレティナ、非レティナでの判別処理を改善しました。スクリーンショット2枚が添付されていたので、原因究明が楽でした。iPhone5も正常に表示されていないとコメントされていますが、おそらくiPadのみが正常に表示されていないのだと思うので、iPadの確認を重視します。

retina判定で、
(1)([[UIScreen mainScreen] respondsToSelector: @selector(scale)]

(2)([[UIScreen mainScreen] respondsToSelector: @selector(scale)] && [[UIScreen mainScreen] scale] == 2.0)
として、レティナかどうかの判定を追加して、シミュレータでiPad非レティナで動作確認ができるようになりました。」

(2)リジェクト対応:再申請、今度は通過するか、

(2)リジェクト対応:再申請、今度は通過するか、iTunesConnectにログインして、アプリを選択してReady to upload binary をクリック
「7月18日、再申請しました。
 iTunesConnectにログインして、アプリを選択してReady to upload binary をクリック。
 つぎに、エディットスキームでDictributionを選択して(ここは各自設定が異なると思います)、オーガナイザを開き、該当アプリを選択して、Validate、Distributeをそれぞれクリックします。」

再申請、まだ認可されず、認可される前にリリース日を変更

(3)リジェクト対応:再申請、まだ認可されず、認可される前にリリース日を変更
「7月24日 メールがなくて認可されていないので、予定だった24日のリリース日を7月26日に変更(いまここ)なお、iTunesコネクトだったかに、不正侵入があったらしく数日、サイトが閉鎖されていました。これが影響しているのかもしれません。」

やっと認可、そしてリリース

(4)完了、アイフォンアプリのリジェクト対応:やっと認可、そしてリリース
7月25日、アイフォンアプリがようやく認可されました。

アイフォンアプリの宣伝、アイフォンアプリ名:どんぐり合戦を7月26日リリースしました
「画像
説明

*内容
アイフォンアプリ名:どんぐり合戦
りすがどんぐりをカラスに投げてカラスを退治するミニゲーム簡単シューティングです。現在の仕様はランキング無し、広告ありです。iPadレティナにも対応しています。

*ダウンロード
どんぐり合戦iTunesストアからダウンロードできます。

*製作のべ期間4月〜7月、3ヶ月+約2週間(企画、開発、リリース日までの期間を含む)、申請からリジェクト1回の約15日で通過、日本語版のみです。cocos2d for iPhoneを使用、製作人数1名
説明ページ

アイフォンアプリの宣伝、アイフォンアプリ名:どんぐり合戦を7月26日リリースしました

アイフォンアプリの宣伝、アイフォンアプリ名:どんぐり合戦を7月26日リリースしました。

申請からリリースの記事

画像
説明

*内容
アイフォンアプリ名:どんぐり合戦
りすがどんぐりをカラスに投げてカラスを退治するミニゲーム簡単シューティングです。現在の仕様はランキング無し、広告ありです。iPadレティナにも対応しています。

*ダウンロード
どんぐり合戦

*製作のべ期間4月〜7月、3ヶ月+約2週間(企画、開発、リリース日までの期間を含む)、申請からリジェクト1回の約15日で通過、日本語版のみです。cocos2d for iPhoneを使用、製作人数1名
説明ページ

リジェクトの内訳は、iPadのレティナ、非レティナ用画像が正常に表示されないというもので、判定処理をより厳密にして修正しました。

備考:過去のcocos2d for iPhone用アプリをcocos2d-xに移植していますが、objective-Cのcocos2d for iPhoneにようやく慣れてきたところで、cocos2d-xを勉強することになりゆっくり前進しているところです。
クロスプラットフォームの風が強く吹いておりcocos2d-xへ多くの人が流れて、cocos2d for iPhoneの今後のバージョンアップが気になります。好みとして、慣れているせいかobjective-Cのcocos2d for iPhoneがプログラムしやすいですね。