【发布时间】:2017-01-21 12:30:05
【问题描述】:
我的 Objective-C 经验不好,如果有人可以帮助我,我会很高兴。
还有一些其他代码,但我相信我将其简化为问题。我想要做的是用一个键保存一个双精度(打包到 NSNumber),下面是我的代码:
.h
@interface MyClass : something
{
MyMap* usemap;
}
@end
@interface MyMap : something
@property (atomic, strong) NSMutableDictionary* mmap;
@end
.m
@implementation MyMap
@class MyClass;
NSMutableDictionary* mmap = [[NSMutableDictionary alloc] init];
@end
@implementation MyClass
MyMap* usemap = [MyMap alloc];
//-void { switch() { case x:
NSString* key = @"testkey";
NSNumber* value = [NSNumber numberWithDouble:1];
NSLog(@"Saving value: %@ to key: %@",value,key);
[usemap.mmap setObject:value forKey:key];
NSNumber* get = [usemap.mmap objectForKey:key];
NSLog(@"Saved value: %@ to key: %@",get,key);
现在打印出来了:
Saving value: 1 to key: testkey
Saved value: (null) to key: testkey
我错过了什么?它应该保存了双数“1”。
【问题讨论】:
-
您的
mmap未初始化。@implementation下的代码没有意义,它没有被执行(至少在你期望的时候)。将您的代码放入初始化程序或某些方法中。 -
我把它移到了一个 -(void)construct,我在分配后运行它。这没有帮助:/
-
好吧!修复! :D 我不得不使用 self.mmap = [[NSMutableDictionary alloc] init];在 alloc 之后调用的 void 函数内。没有自我。首先它没有用。
标签: ios objective-c xcode nsmutabledictionary