「Xcode」カテゴリーアーカイブ

配列 並べ替える ソート

テキスト大文字/小文字を区別しない abc 順に並べる「caseInsensitiveCompare」
[php]
NSArray *fruits = @[@"meron", @"peach", @"apple", @"orange"];
NSArray *sortedFruits = [fruits sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"%@", sortedFruits);
[/php]

sortedArrayUsingDescriptorsメソッド昇順/降順の並び替え ascending 昇順/降順 YES/NO
[php]
NSArray *fruits = @[@"meron", @"peach", @"apple", @"orange"];
NSArray *sortedFruits = [fruits sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"" ascending:NO]]];
NSLog(@"%@", sortedFruits);
[/php]

配列 ネスティング

ネスティング 配列の配列を作りデータを効率よく管理する
[php]
  NSMutableArray *theList = [NSMutableArray array];
[theList addObject:@[@"いち", @"に"]];
[theList addObject:@[@"さん", @"よん"]];
[theList addObject:@[@"ご", @"ろく", @"なな"]];
NSLog(@"%@", theList[1][1]);
[/php]

配列の値を検索
値が見つからないときはNSNotFound
[php]
NSArray *kuni = @[@"日本", @"アメリカ", @"アフリカ", @"中国"];
NSUInteger index = [kuni indexOfObject:@"アフリカ"];
if (index != NSNotFound) {
NSLog(@"%d", index);
}else{
NSLog(@"ありません");
}
[/php]

あるかないかを調べる 判断だけならcontainsObject
[php]
NSArray *kuni = @[@"日本", @"アメリカ", @"アフリカ", @"中国"];
NSString *kuni1 = @"アメリカ";
BOOL isFound = [kuni containsObject:kuni1];
if (isFound) {
NSLog(@"あります");
}else{
NSLog(@"ありません");
}

[/php]

配列 要素を追加削除できる NSMutableArray

配列に要素を追加する
[php]
NSMutableArray *happy2 = [NSMutableArray array];
[happy2 addObject:@"odiejs"];
[happy2 addObjectsFromArray:@[@"dkdiaha", @"idos"]];
NSLog(@"%@", happy2);
[/php]

乱数の入った配列を作る
[php]
NSMutableArray *happy3 = [NSMutableArray array];
NSInteger v;
for (int i=0; i<20; i++) {
v = arc4random() % 10;
[happy3 addObject:@(v)];
}
NSLog(@"%@", happy3);
[/php]

配列に値を挿入
[php]
NSMutableArray *fruits = [NSMutableArray arrayWithArray:@[@"apple", @"orange"]];
[fruits insertObject:@"strawberry" atIndex:0];
NSLog(@"%@", fruits);
[/php]

配列から値を削除する
[php]
NSArray *fruitsSet = [NSMutableArray arrayWithArray:@[@"kokoa", @"gor", @"jojo", @"iii"]];
NSMutableArray *fruits = [NSMutableArray arrayWithArray: fruitsSet];
[fruits removeObjectAtIndex:2];
[fruits removeObject:@"kokoa"];
NSLog(@"%@", fruits);
[/php]

配列 NSArray クラス

[php]
NSArray *happy;
happy = @[@"ieoepa", @"ieoepa", @"ieoepa"];
NSLog(@"こんどは %@", happy);
[/php]

数値を入れる
[php]
NSArray *num;
num = @[@16, @20, @4];
NSLog(@"num = %@", num);
[/php]

変数の入っている数値を配列する場合
[php]

int a =10;
float b = 0.11;
double c = 33.5;
NSArray *NumList = @[@(a), @(b), @(c)];
NSLog(@"NumList = %@", NumList);
[/php]

配列から要素を取り出す(0から数えてるからこの場合はieoepaを取り出し)
[php]
NSArray *happy;
happy = @[@"ieoepa", @"ieoepa", @"ieoepa"];
NSLog(@"こんどは %@", happy[1]);
[/php]

配列の最後の要素を取り出す
[php]
NSArray *happy;
happy = @[@"ieoepa", @"ieoepa", @"ieoepa"];
NSString *thehappy = [happy lastObject];
NSLog(@"こんどは %@", thehappy);
[/php]

配列から数値オブジェクトを取り出しても計算には使えないため、数値オブジェクトを計算処理できる数値に戻す(intValueとかfloatValue)
[php]
NSArray *nums = @[@300, @0.05];
//intに変換
int v1 = [nums[0] intValue];
//floatに変換
float v2 = v1 * (1+[nums[1] floatValue]);
NSLog(@"原価 %d 売価 %.0f", v1, v2);
[/php]

高速列挙
for文を利用して配列の要素の数だけ繰り返し要素を取り出す。
[php]
NSArray *number = @[@"ぜろ", @"いち", @"に", @"さん"];
int len = number.count; //配列にいくつか数を求めるcount
for (int i=0; i<len; i++) {
NSLog(@"%d %@", i, number[i]);
}
[/php]

for inを使用し高速に処理を行なう
[php]
NSArray *intlist = @[@1, @5, @3, @1];
NSInteger sum = 0;
//値をnumに取り出す
for(NSString *num in intlist){
//数値オブジェクトを計算できる数値に変換する
sum += [num intValue];
}
NSLog(@"%d", sum);
[/php]

指定日までの日数を求める

[php]
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //作成 と イニシャライズ
[formatter setDateFormat:@"yyyy/MM/dd"]; //setDateFormatメソッドで書式指定
NSDate *today = [NSDate date]; //今日の日付
NSDate *eventDate = [formatter dateFromString:@"2014/01/15"]; //日付のオブジェクト 指定日
NSTimeInterval secs = [eventDate timeIntervalSinceDate:today]; //2つの日付が何秒あるかを求める todayとeventData はsecs
NSInteger dayes = round(secs/(60*60*24)); // secs/60*60*24で日付に換算
NSLog(@"あと %d日", dayes);
[/php]

※1日は24時間、1時間=60分 1分=60秒
※ 一日は86400秒

インスタンスの作成と初期化

クラスからインスタンスを作成して使うには
①”インスタンスの作成”
②”インスタンスの初期化”
の手順が必要

クラスからインスタンスを作るにはルートクラスNSObjectのallocメソッドを使う
インスタンスの初期化にはinitメソッド

[php]
NSData *theData = [NSData alloc]; //インスタンスを作る
theData = [theData init]; //初期化する
NSLog(@" %d", theData);
[/php]

一行で書くのが一般的とのこと

[php]
NSData *theData2 =[[NSData alloc] init];
NSLog(@" %d", theData2);

[/php]

define マクロ定数

マクロ定数 擬似的に定数を宣言できる

[php]
#import "ViewController.h"
// #defineの定数定義
#define POINT 100
#define URL @"kdsoaa.co.jp"

@interface ViewController ()

@end

@implementation ViewController

– (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

NSLog(@"ポイントは %d, URLは %@",POINT, URL);

}
[/php]

const 定数の宣言

変数の宣言にconst をつけると変数が定数になる

※変数と異なり、宣言時に決めた値をコードの中で後から変更することができない。
[php]
const int LEVEL = 27;
NSString * const COLOR = @"緑色";
NSLog(@"%d %@", LEVEL, COLOR);
[/php]

ポインター変数

変数には数値しか入らないが、ポインター変数は、文字やオブジェクトなどを扱うことが出来る

「*変数」のように*を変数の前につけるよ

[php]
NSString *msg;
NSData *now;
msg = @"ありがとう";
now = [NSData data];
NSLog(@"%@ %@", msg, now);
[/php]