私はiOSが初めてです。から派生したクラスがあり、NSObject
その参照を に保存したいと考えていますNSMutableDictionary
。どうやって?例えば
@interface CustomClass : NSObject
{
}
この CustomClass の参照 (*customClass) を に格納したいと考えていNSMutableDictionary
ます。簡単な保管方法と取り出し方を教えてください。
私はiOSが初めてです。から派生したクラスがあり、NSObject
その参照を に保存したいと考えていますNSMutableDictionary
。どうやって?例えば
@interface CustomClass : NSObject
{
}
この CustomClass の参照 (*customClass) を に格納したいと考えていNSMutableDictionary
ます。簡単な保管方法と取り出し方を教えてください。
オブジェクトを に格納するときNSMutableDictionary
は、オブジェクト自体ではなく、オブジェクトへの参照 (ポインタ) を格納しています。CustomClass
したがって、オブジェクトを標準オブジェクトとは異なる方法で扱う必要はありません。
以下のすべてが機能します。
CustomClass *customObject;
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] initWithObjectsAndKeys:customObject, @"key", nil];
[mutableDictionary setObject:customObject forKey:@"key"];
CustomClass *retrievedObject = [mutableDictionary objectForKey:@"key"];
使用する
NSMutableDictionary *obect = [[NSMutableDictionary alloc] initWithObjects:CustomObject forKeys:@"Customobjectkey"];
このキー「Customobjectkey」でオブジェクトを取得し、クラスに従ってそのオブジェクトを型キャストできます。
NSMutableDictionary
は、NSDictionary
値キーの for でペアを動的に追加および削除できる です。
カスタムオブジェクトを追加するときに、ペアにするキー値を指定するだけです(つまり、 a NSString
)。
CustomClass * myObj = ... //declared and initialized obj
NSMutableDictionary * myDict = [[NSMutableDictionary alloc] init]; //declared and initialized mutable dictionary
[myDict setObject:myObj forKey:@"first"]; //assigning a string key to the object
NSLog(@"My first object was %@", [myDict objectForKey:@"first"]); //retrieving the object using its key. It will print its reference
CustomClass * anotherObj = (CustomClass *)[myDict objectForKey:@"first"]; //retrieving it and assigning to another reference obj. It returns a NSObject, you have to cast it
[myDict removeObjectForKey:@"first"]; //removing the pair obj-key
NSLog(@"My first object was %@", [myDict objectForKey:@"first"]); //cannot find it anymore
これはNSDictionaries を使ったちょっとしたチュートリアルです。
ViewController という UIViewController クラスに NSMutableDictionary iVar を作成するとします。
ViewController.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController{
}
@property (nonatomic, strong) NSMutableDictionary *mutDict;
@end
ViewController.m
#import "ViewController.h"
#import "CustomClass.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize mutDict=_mutDict;
-(void)viewDidLoad{
[super viewDidLoad];
CustomClass *cc1=[[CustomClass alloc] init];
CustomClass *cc2=[[CustomClass alloc] init];
self.mutDict=[[NSMutableDictionary alloc] initWithObjectsAndKeys: cc1, @"key1", cc2, @"key2", nil];
}
@end
この例では (ARC を想定して) メモリ管理を行っておらず、このコードをテストしていないことに注意してください。
//store
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObject:customClass forKey:@"myCustomClass"];
//retrieve
CustomClass *c = (CustomClass*)[dictionary objectForKey:@"myCustomClass"]