2

私はiOSが初めてです。から派生したクラスがあり、NSObjectその参照を に保存したいと考えていますNSMutableDictionary。どうやって?例えば

    @interface CustomClass : NSObject
    {
    }

この CustomClass の参照 (*customClass) を に格納したいと考えていNSMutableDictionaryます。簡単な保管方法と取り出し方を教えてください。

4

6 に答える 6

0

オブジェクトを に格納するときNSMutableDictionaryは、オブジェクト自体ではなく、オブジェクトへの参照 (ポインタ) を格納しています。CustomClassしたがって、オブジェクトを標準オブジェクトとは異なる方法で扱う必要はありません。

以下のすべてが機能します。

    CustomClass *customObject;

    NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] initWithObjectsAndKeys:customObject, @"key", nil];
    [mutableDictionary setObject:customObject forKey:@"key"];
    CustomClass *retrievedObject = [mutableDictionary objectForKey:@"key"];
于 2012-08-30T07:36:55.417 に答える
0

使用する

 NSMutableDictionary *obect = [[NSMutableDictionary alloc] initWithObjects:CustomObject forKeys:@"Customobjectkey"];

このキー「Customobjectkey」でオブジェクトを取得し、クラスに従ってそのオブジェクトを型キャストできます。

于 2012-08-30T07:40:24.743 に答える
0

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 を使ったちょっとしたチュートリアルです。

于 2012-08-30T07:40:48.597 に答える
0

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 を想定して) メモリ管理を行っておらず、このコードをテストしていないことに注意してください。

于 2012-08-30T07:41:57.650 に答える
-1
//store
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObject:customClass forKey:@"myCustomClass"];

//retrieve
CustomClass *c = (CustomClass*)[dictionary objectForKey:@"myCustomClass"]
于 2012-08-30T07:36:40.870 に答える