我想在几个 UITableViews 之间共享一个 NSMutableDictionary。重点是,在一个视图中,我可以将数组作为值和对应的键添加到字典中,然后设置 SingletonObject 的字典属性。然后在另一个视图中,我可以通过 SingletonObject 的属性访问字典中的数组。
对于 SingletonObject,在头文件中,我有这个:
@property(nonatomic) NSMutableDictionary * dict;
+(SingletonObject *) sharedManager;
在 SingletonObject 的实现文件中,我有这个:
@synthesize 字典;
+(SingletonObject *) sharedManager { 静态 SingletonObject * sharedResourcesObj = nil;
@synchronized(self)
{
if (!sharedResourcesObj)
{
sharedResourcesObj = [[SingletonObject alloc] init];
}
}
return sharedResourcesObj;
}
然后我在我的 UITTableView 类之一中执行以下操作
// instantiate the SingletonObject
sharedResourcesObj = [SingletonObject sharedManager];
// instantiate array
NSMutableArray *courseDetails = courseDetails = [[NSMutableArray alloc]init];
// put textview value into temp string
NSString *tempString = tempString = [[NSString alloc]initWithString:[_txtBuildingRoom text]];
// put textview value into array (via temp string)
[courseDetails addObject:tempString];
// set dictionary property of SingletonObject
[sharedResourcesObj.dict setObject:courseDetails forKey:_lblCourse.text];
问题是,当我将所有内容逐行打印到控制台时,所有内容都有一个值并且工作正常,除了字典的新值不存在。
当我使用下面的代码检查字典的值或计数时,计数为 0,字典中没有对象。
// dictionary count
NSLog(@"%i", sharedResourcesObj.dict.count);
// get from dictionary
NSMutableArray *array = [sharedResourcesObj.dict objectForKey:_lblCourse.text];
// display what is in dictionary
for (id obj in array)
{
NSLog(@"obj: %@", obj);
}
我正在使用正确的概念在 UITableViews 之间共享字典?
我的 SingletonObject 实现是否存在问题?
我之前使用过 SingletonObject 的这种实现来在选项卡之间共享整数值,并且绝对没有问题。现在唯一的区别是 SingletonObject 的属性不是整数,而是 NSMutableDictionary。
任何人都可以帮忙吗?