ラベル NSArray の投稿を表示しています。 すべての投稿を表示
ラベル NSArray の投稿を表示しています。 すべての投稿を表示

2015年11月25日水曜日

独自クラスのArrayを指定のコード順に並べ替える(メモ)

 EntityItem*item1 = [[EntityItem alloc]init];
    item1.name = @"なまえ1";
    item1.code = @"id10";

    EntityItem*item2 = [[EntityItem alloc]init];
    item2.name = @"なまえ2";
    item2.code = @"id03";
    EntityItem*item3 = [[EntityItem alloc]init];
    item3.name = @"なまえ3";
    item3.code = @"id12";
    EntityItem*item4 = [[EntityItem alloc]init];
    item4.name = @"なまえ4";
    item4.code = @"id05";
    EntityItem*item5 = [[EntityItem alloc]init];
    item5.name = @"なまえ5";
    item5.code = @"id02";
//並び替える独自クラス入り配列
    NSArray *origin = @[item1,item2,item3,item4,item5];
    
//並び替えたいコードの順番    
    NSArray *sort = @[@"id02",@"id10",@"id03",@"id12",@"id05"];

 //並び替え
    NSArray *sortedArray = [origin sortedArrayWithOptions:NSSortConcurrent
                                           usingComparator:(NSComparator)^(EntityItem* obj1,EntityItem* obj2){
                                               NSUInteger index1=[sort indexOfObject:obj1.code];
                                               NSUInteger index2=[sort indexOfObject:obj2.code];
                                               if(index1>index2){
                                                   return NSOrderedDescending;
                                               }else {
                                                   return NSOrderedAscending;
                                               }
                                           }];

//並び変わった確認
    for(EntityItem*item in sortedArray){
        NSLog(@"code:%@",item.code);
    }
    
   
 

2011年8月3日水曜日

ストリングからクラスとセレクター(メソッド)生成

クラスやメソッド(@selector())はNSArrayやNSDictionary格納できない。
でも、NSStringからセレクターとクラスを生成できるからそれ格納しておけばおっけーですね!

Aclassname = @"TestView";
Bselectorname = @"TestMethod";

Class Aclass = NSClassFromString(Aclassname);
SEL Bselector = NSSelectorFromString(Bselectorname);

2011年1月19日水曜日

NSArray 逆順に高速列挙

NSArray * array=[NSArray arrayWithObjects:
          @"a",@"b",@"c",@"d",@"e",nil];
for(NSString*obj in [array reverseObjectEnumerator]){
  NSLog(@"word=%@",obj); 
}
eから順にaまで出力されます。よしよし。

ちなみに、高速列挙中に列挙しているarrayの要素を
足したり消したりしたらエラーになる。

2010年10月18日月曜日

特定文字で分割して配列に入れて返す

文字列をセパレータで分けて、配列にして返す
-(NSArray *) componentsSeparatedByString:(NSString *)separator

NSString *str;
NSArray *arr;
str = [[NSString alloc] initWithString:@"aaa:bbb:ccc:ddd:eee:fff"];
arr = [str componentsSeparatedByString:@":"];