Objective-C の Xcode 4.5.1 で作業しています。私は聴力検査を行っており、各質問に関連するデータを配列に保存したいと考えています。シングルトン MyManager を作成しました。これを使ってデータを保存しています。
単純な int/float 値などでは問題なく動作していますが、NSMutableArray を使用しようとして行き詰まりました。私はObjective-Cを初めて使用するので、明らかな間違いを犯したと想定/期待しています。
したがって、mySNRArray に float 値を入力したいと思います。オブジェクトしか取得できないため、フロートを単純に追加できないことを理解するようになりました。したがって、私は NSNumber を使用します。
問題: NSMutableArray に追加したはずのデータを読み取ろうとすると、(null) が返されます。
関連するコードを提供します。
MyManager.h
@interface MyManager : NSObject
{
NSMutableArray *mySNRArray;
}
@property (readwrite) NSMutableArray *mySNRArray;
+ (id)sharedManager;
@end
MyManager.m
@implementation MyManager
@synthesize mySNRArray;
+ (id)sharedManager
{
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
- (id)init
{
if (self = [super init])
{
NSMutableArray *mySNRArray = [[NSMutableArray alloc]init];
}
return self;
}
@end
TestViewController.m
//First, I try to add a value to mySNRArray.
MyManager *Manager = [MyManager sharedManager];
NSNumber *tempStorage1 = [[NSNumber alloc] initWithFloat:mySNR];
[Manager.mySNRArray insertObject:tempStorage1 atIndex:questionNumber];
//The NSLog below is showing the correct value.
NSLog(@"%@ : mySNR", tempStorage1);
...
for (n = 0; n < questionNumber; n++)
{
//Second, I try to acces the values I supposedly added to mySNRArray.
MyManager *Manager = [MyManager sharedManager];
//This NSLog below is showing (null).
NSLog(@"Value at %i in SNRArray = %@", n, [Manager.mySNRArray objectAtIndex:n]);
}
...
誰かが私のエラーを説明してくれることを願っています。