Objective-C構文の辞書オブジェクト(NSDictionary/SMutableDictionary)
Java言語やC言語の開発をしたことのある方はキーワードmapをよく知っているでしょうが、データをキー値対児の形で保存することができ、値を取るときにKEYで直接対応する値を手に入れることができるので便利です.Objective-C言語では辞書オブジェクトはこのことをしていますが、同じ辞書オブジェクトに複数の異なるタイプのデータを保存することができます.JavaやCでは宣言された同じタイプのデータしか保存できません.そのキーワードはNSDictionaryとNSMutableDictionaryです.私の前の文章を読んだことがある友达はキーワードの構造からこの2つの違いを見ることができます.前者は可変辞書であるか,あるいは可変辞書であることは明らかである.
1.可変辞書の作成
2.可変辞書オブジェクトの作成
NSMutableDictionaryはNSDictionaryのサブクラスであるため、NSDictionaryのメソッドを継承している.
辞書クラスの存在は大量のデータの中で検索するのが便利であることを解決するためで、keyを通じて直接valueを見つけるので速度が速くて、一つ一つの遍歴を避けて探す効率が低下して、辞書クラスをよく使うとあなたのプログラムをスピードアップすることができます.
1.可変辞書の作成
[NSDictionary dictionaryWithObjectsAndKeys:..] : , nil 。
[NSDictionary initWithObjectsAndKeys:..] : , nil 。
[dictionary count]: 。
[dictionary keyEnumerator]: KEY NSEnumerator ,NSEnumerator Java , KEY 。
[dictionary objectEnumerator]: value NSEnumerator , KEY Value 。
[dictionary objectForKey:key]: KEY KEY 。
#import <UIKit/UIKit.h>
#import "MyClass.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@" MOMO",@"name",@"15810463139",@"number", nil];
//
int count = [dictionary count];
NSLog(@" : %d",count);
// KEY
NSEnumerator * enumeratorKey = [dictionary keyEnumerator];
// KEY
for (NSObject *object in enumeratorKey) {
NSLog(@" KEY : %@",object);
}
// Value
NSEnumerator * enumeratorValue = [dictionary objectEnumerator];
// Value
for (NSObject *object in enumeratorValue) {
NSLog(@" Value : %@",object);
}
// KEY value
NSObject *object = [dictionary objectForKey:@"name"];
if (object != nil) {
NSLog(@" KEY value : %@",object);
}
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
2.可変辞書オブジェクトの作成
NSMutableDictionaryはNSDictionaryのサブクラスであるため、NSDictionaryのメソッドを継承している.
[NSMutableDictionary dictionaryWithCapacity:10] : 10., 10 , 。
[NSMutableDictionary initWithCapacity:10] : 10。
[dictionary setObject:@" MOMO" forKey:@"name"] : , key name MOMO。 KEY KEY 。
[dictionary removeAllObjects..] : 。
[dictionary removeObjectForKey..] : KEY 。
#import <UIKit/UIKit.h>
#import "MyClass.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//
// , 10
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:10];
//
[dictionary setObject:@" MOMO" forKey:@"name"];
[dictionary setObject:@"15810463139" forKey:@"number"];
// KEY value
NSObject *object = [dictionary objectForKey:@"name"];
if (object != nil) {
NSLog(@" KEY value : %@",object);
}
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
辞書クラスの存在は大量のデータの中で検索するのが便利であることを解決するためで、keyを通じて直接valueを見つけるので速度が速くて、一つ一つの遍歴を避けて探す効率が低下して、辞書クラスをよく使うとあなたのプログラムをスピードアップすることができます.