labelでHello World!と表示するテスト
ソース
-------------------------------------------------
//UILabelオブジェクトの生成
UILabel *label = [[UILabel alloc] init];
//UILabelはラベルを管理するクラス。画面に文字を表示させる時に使用。
//[[クラス名 alloc] init] → init メソッド(イニシャライザ)でオブジェクトを初期化。
//alloc → インスタンスの生成に必要なメモリ容量を確保する。allocation(アロケーション)は「割り当て」の意。
//textプロパティで文字を設定
label.text = @"Hello World!";
//UILabelで高さを動的に変える。テキストを設定した後に行う。
[label sizeToFit];
label.center = self.view.center;
[self.view addSubview:label];
-------------------------------------------------
カテゴリー:Objective-C, xcode
FMDBでテーブル内の情報を出力するソースコード
前提として
- FMDBが導入されている(導入方法はこちら)。
- test.dbというファイルが iOS Simulator の Documents ディレクトリにある(iOS Simulatorののパスについてはこちら)。このディレクトリに直接データファイルを置くと、シミュレーターのバージョンごとにデータファイルを置く必要があるので面倒。解決策として、Supporting Files 内にデータファイルを置いておいて、アプリ起動時に Supporting Files 内にデータがない場合に Documents ディレクトリにコピーする方法がある。詳しくは、こちら
- title というカラムにデータが既に入っている
ソースコード
----------------------------------------------------------------
//インポート(ヘッダーファイル)
#import "FMDatabase.h"
----------------------------------------------------------------
----------------------------------------------------------------
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// パスとDBファイル名を指定
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
//test.db はファイル名
NSString *db_path = [dir stringByAppendingPathComponent:@"test.db"];
FMDatabase *db = [FMDatabase databaseWithPath:db_path];
//データを抽出
[db open];
//testdb はテーブル名
FMResultSet *rs = [db executeQuery:@"select id,title from testdb"];
while ([rs next]){
// 出力
NSString *text1 = [rs stringForColumn:@"title"];
//UIlabelクラスのインスタンスを生成。
//alloc でインスタンスの生成(allocationはメモリの割り当ての意)。init で初期化。
UILabel *label = [[UILabel alloc] init];
//labelオブジェクトにテキストを設定
label.text = text1;
//コンテンツの大きさの合わせてUIViewの大きさを変える。UIViewはUIlabelの親クラス。
[label sizeToFit];
//行数の指定。0は、表示可能な最大行数。(インスペクターでの設定も可だがソースが優先される)
label.numberOfLines = 0;
label.center = self.view.center;
[self.view addSubview:label];
// 出力 ここまで
}
[rs close];
}
----------------------------------------------------------------
結果をラベルに表示せずに、配列に入れる場合はスクリプト後半を以下のように変更する
----------------------------------------------------------------
//データを抽出
[db open];
FMResultSet *rs = [db executeQuery:@"select id,title from testdb"];
while ([rs next]){
// 出力
NSString *text1 = [rs stringForColumn:@"title"];
//配列を追加。配列の型は必ず NSMutableArray であること。NSMutableArray は不可。
[testArray addObject:text1];
//UIlabelクラスのインスタンスを生成。
//alloc でインスタンスの生成(allocationはメモリの割り当ての意)。init で初期化。
// UILabel *label = [[UILabel alloc] init];
//labelオブジェクトにテキストを設定
//label.text = text1;
//コンテンツの大きさの合わせてUIViewの大きさを変える。UIViewはUIlabelの親クラス。
//[label sizeToFit];
//label.center = self.view.center;
//[self.view addSubview:label];
// 出力 ここまで
}
[rs close];
----------------------------------------------------------------
カテゴリー:Objective-C, SQLite, xcode
Objective-C で記述したソースを run するとコンソールにエラーが出た
エラー内容
--------------------------------------------------------
2015-xx-xx 19:xx:xx.xxx FMDBTest[xxxx:xxxxxx] The FMDatabase <FMDatabase: xxxxxxxxxxxxxx> is not open.
--------------------------------------------------------
原因と解決策
原因:下記の記述が反対だった
--------------------------------------------------------
FMResultSet *rs = [db executeQuery:@"select id,title from testdb"];
[db open];
--------------------------------------------------------
解決策:記述の順番を入れ替えた
--------------------------------------------------------
[db open];
FMResultSet *rs = [db executeQuery:@"select id,title from testdb"];
--------------------------------------------------------
カテゴリー:xcode
iOS SimulatorのDocumentsまでのパスはこれ
------------------------------------
~/Library/Developer/CoreSimulator/Devices/{simulated device UUID}/data/Containers/Data/Application/{application UUID}/Documents/
「~」はホームディレクトリのこと。「Macintosh HD」 の下の「ユーザ」の下の「ユーザ名」のディレクトリ。
------------------------------------
simulated device UUID は、Xcode の「Window」-「Devices」から起動した Simulator を選択すれば分かる。「identifier」の項目。
でも分かりにくいので、「SimPholders2」というアプリを使うといい。
ダウンロードはこちら
参考ページ:
http://qiita.com/singo405/items/b84f81ee2daaef27d0a2
カテゴリー:xcode
FMDB は SQLite を iOS の Objective-C で扱いやすくするための Wrapper ライブラリ。GitHub で公開されている。
1.あらかじめ「libsqlite3.0.dylib」を追加しておく
SQLiteを使用するために「Targets」->「Build Phases」->「Link Binary With Libraries」から「libsqlite3.0.dylib」を追加しておく。
詳細はこちら
2.FMDBをアプリに組み込む
プログラムをこちらからダウンロード。
ダウンロードしたディレクトリ内のfmdb-master/src/ 配下にある fmdb というディレクトリを、ディレクトリXcodeのプロジェクトフォルダ内(プロジェクト名のフォルダ直下、MasterViewController.h などがあるところ)に xcode の project navigator エリアに直接ドラッグして置く。ただし、「fmdb.m」という名前のファイルだけ外しておく(main 関数が実装されていて、ビルド時にコンパイルエラーが出る)。
fmdb ディレクトリをプロジェクト内に置くときはナビゲーターエリアに直接ドラッグする。
詳細はこちら
「Choose options for adding these files」のダイアログが出るので「Destination Copy items ~」にチェックを入れることでアプリに組み込める。
3.インポート
ソースコード
----------------------------------------------------------------
#import "FMDatabase.h"
----------------------------------------------------------------
ヘッダーファイル(.h)でも実装ファイル(.m)でもどちらでもいい。
ビルドしてエラーが出なければOK。
カテゴリー:SQLite, xcode
乱数が必要なったので覚書
-------------------------------
// ファイルを開く
fid = FOPEN("ransuu.txt", F_WRITE)
// 1行出力
for i = 1 TO 50
r = RANDOM(89999999) + 10000000
FPUT(fid, r)
// 1行出力
next
// ファイルを閉じる
FCLOSE(fid)
-------------------------------
//作ったファイルを開く
exec("notepad ransuu.txt")
カテゴリー:uwsc