忘備録

日々の調べ物をまとめる。アウトプットする。基本自分用。

Objective-C

Lexical or Preprocessor issue 'xxx.h' file not found

Lexicalかプリプロセッサのせいでファイルが見つからんとのこと。 とりあえず、「Lexical」の意味がわからないので調べてみる Lexical lexicalの意味 - 英和辞典 Weblio辞書 語彙の,単語の 余計わからない。。。 よくやりがちなソースファイルは作ったけど…

【Objective-C】画像の向きがIBに表示されているものと違って困った

困った現象と再現 ↓の画像を。。。 こんなかんじで表示したい なにも考えずにInterfaceBuilderで作って シュミレータで実行したら 横向きになってしまった。。。 修正1 ググって以下のように修正 xcode UIImageを回転して保存する|田中カナた。 コード抜粋…

【Objective-C】protectedなproperty

protectedなpropertyの実現の仕方を現場のエレガントなコードを書く方に教えていただきました。 カテゴリーを利用すると実現できるんですね。 まず親クラス。 SuperHoge.m #import <Foundation/Foundation.h> @interface SuperHoge : NSObject @end SuperHoge.m #import "SuperHoge.h"</foundation/foundation.h>…

【Objective-C】カテゴリー

カテゴリーを使ってNSDictoinaryにJavaのMap#containsKey的なメソッドを追加してみる。 NSDictionary+TestCategory.h #import <Foundation/Foundation.h> /** カテゴリの宣言には@interfaceキーワードを使います。 クラスインターフェイスの記述に似ていますが、親クラスの指定はあり</foundation/foundation.h>…

【Objective-C】switch文でexpected expressionエラー

下記のようなコードを書くと。。。 NSInteger value = 0; switch (value) { case 0: NSString *str = @“hoge”; break; default: break; } 「expected expression」と怒られちゃいます。 どうやらswitch文のなかで新規に変数を定義する際は, 新たにスコープを…

【Objective-C】独自クラスの配列でfilteredArrayUsingPredicate

下記のようなモデルクラスがあります。 @interface HogeModel : NSObject @property NSString *groupCode; @property NSString *code; @property NSString *value; @end @implementation HogeModel : NSObject @end 上記のモデルの配列からgroupCodeが同じも…

【Objective-C】NSArrayの要素のフィルタリング

こんな配列があります。 NSArray *numberStringArray = @[@"One", @"Two", @"Three", @"Four", @"Five"]; そのうち"T"から始まる要素だけ取得したい。 そんな時は。。。 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K beginsWith %@", @"…

【Objective-C】substring

Javaとごっちゃになるのでまとめておく。 substringToIndex: n n文字目の前まで(n文字目は含まない)を返す substringFromIndex: n n文字目から後ろ(n文字目を含む)を返す substringWithRange:NSMakeRange(n, m) n文字目からm文字返す 例) NSString *add…

【Objective-C】NSLogの出力方法

Objective-C:デバッグの基本!NSLogでBOOLや様々な値を出力する | siro:chro Cを触って来なかったので四苦八苦しますね。。。

【Objective-C】NSDictionary キーの存在チェック

残念ながらJavaにある Map#containsKey のようなメソッドはない模様。。。 なので以下の方法で。 NSArray containsObject: を利用する方法 NSDictionary objectForKey: を利用する方法 NSArray *keys = @[@"key1",@"key2",@"key3",@"key4"]; // "key2"と"key…

NSInvalidArgumentException reason: nil argument

HogeClass *hogeClass = nil; // HogeクラスはNSString型のproperty「hogeProperty」を持っている。実際のコードはメソッドから戻り値を受け取ってますが。 NSMutableString *string = [NSMutableString string]; [string appendString:hogeClass.hogeProper…

【Objective-C】NSDictionaryの中身を全て取り出す

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"hoge" forKey:@"fuga"]; for (id key in dictionary){ NSLog(@"Key:%@ Value:%@", key, [dictionary valueForKey:key]); } 参考 Objective-C - NSDictionaryの中身を全部取り出すときは - …

【Objective-C】イニシャライザー

イニシャライザー 引数ありのイニシャライザーの書き方。 HogeClass.h @interface HogeClass : NSObject /** 引数1 */ @property(readonly) NSString *param1; /** 引数2 */ @property(readonly) NSString *param2; /** イニシャライザー */ - (id)initWit…

【Objective-C】protectedなメソッド

そんなものはなかった。。。 Objective-C の Private / Protected Method: 雲か霧のようになくなってまうブログ そもそも Objective - C には、他の Object 指向言語のような private/protected メソッドの機構が無いらしい。 無名カテゴリで無理くりprivate…

【Objective-C】シングルトン

ARCという前提で... Singleton.h #import <Foundation/Foundation.h> @interface Singleton : NSObject /** インスタンス生成ファクトリメソッド @return Singletonクラスのインスタンス */ + (Singleton*)sharedManager; @end Singleton.m #import "Singleton.h" @implementation Sin</foundation/foundation.h>…

【Objective-C】staticな定数なNSArray

を作ろうとして、NSStirngと同じように定義したらXcodeに怒られた。 // hoge.h extern NSArray * const kHoge; //hoge.m NSArray * const kHoge = @[@"hoge", @"fuga"]; Xcodeさん「Initializer element is not a compile-time constant」 2012-07-04 - Kazz…

【Objectibe-C】メソッドのラベルの引数について

Objective-Cのメソッド。 ラベルが意味わかんなかったけど、以下の記事で理解できた 笑 メソッド引数のラベリング - TrashSUITE 第一引数はメソッド名で意味付けできているからよしとして,第二引数以降はラベルで意味付けしなさいよという代物

【Objective-C】真偽値について

なんか色々でてくるので整理する。 Objective-Cでの真偽値型 - ちくわプログラマにっき BOOL Objective-Cの標準 値はYES/NOもしくは0/1 結論Objective-cではこいつを使えばOKかな bool Cの標準 Boolean 「Mac OS historical type」とのこと。 「Mac OS histo…

【Objective-C】NSDateオブジェクトからエポック秒を取得する

NSDate timeIntervalSince1970プロパティを取得する NSDate *now = [NSDate date]; double timeInterval = [now timeIntervalSince1970]; 参考: NSDate Class Reference

【Objective-C】数値の絶対値を取得する

C言語の関数 abs などを使う Objective-Cと戦うブログ: NSDateでマイナスの値が返る場合はfabs関数で絶対値を取る fabs(int n) →int型の絶対値を取得する labs(long n) →long型の絶対値を取得する fabs(float n) →double型の絶対値を取得する

【Objective-C】NSIntegerがあって、NSDoubleがないわけ

objective c - Do NSDouble, NSFloat, or other types than NSInteger exist? - Stack Overflow NSInteger exists because the int type varies in size between 32-bit and 64-bit systems. float and double don't vary in size the same way, so there's …

【Objective-C】数値を文字列に変換

NSString + (instancetype)stringWithFormat:(NSString *)format を使う double number = 3.14; NSString *numberString = [NSString stringWithFormat:@"%f", number]; 参考:NSString Class Reference

【Objective-C】プロパティ名の制約

以下のようなコードを書いたところ。。。 hogehoge.h @property NSString *newHoge; Xcodeから以下のようにお叱りが。。。 Property follows Cocoa naming convention for returning 'owned' objects んで、調べてみた objective c - Semantic Issue: Proper…