0

我正在尝试开始使用 NSMutableArrays。我有一个显示项目列表的 UITableView。当一行滚动过去时,我想将某些变量(NSStrings)存储在一个数组中。我可以用 NSLog 做到这一点,但是在设置 NSMutableArray 时遇到了麻烦。这就是我目前的设置方式。

cellForRowAtIndexPath我的 .m 文件的方法中,我使用了以下 NSStrings:

  • 地点 ID
  • 当前时间
  • TextForMyLabel
  • 地点纬度
  • 地点经度

我想将这些存储在一个名为 scrolledOver 的 NSMutableArray 中。我想使用术语“key1、key2、key3...”来标识数组的元素。

在我的 .h 文件中,我像这样声明 NSMutable 数组:

@Interface viewController {
    NSMutableArray *scrolledOver;
}

@property (nonatomic, retain) NSMutableArray *scrolledOver;

当我滚动每一行时,我只想将新字符串附加到数组中......任何想法都会非常有帮助!谢谢!

4

2 回答 2

1

您可以为该单元格创建一个字典并将其添加到数组中,如下所示:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:placeId forKey:@"key1"];
[dict setObject:CurrentTime forKey:@"key2"];
....
[scrolledOver addObject:dict];
于 2013-10-06T05:52:23.693 回答
0

不要将这些值添加到字典中。这是不必要的,如果您的其中一个键发生更改,您将不会知道它。

相反,使用自定义属性创建一个 NSObject 子类。如果变量名称或将来发生更改,这将给您带来严重错误,使您不可能意外忘记更改应用程序所有区域的键。

我假设这些变量定义了一个“地方”,如下所示:

@interface Place : NSObject

@property (nonatomic, assign) NSUInteger placeId;
@property (nonatomic, strong) NSDate* currentTime;
@property (nonatomic, copy) NSString* name;
@property (nonatomic, assign) double latitude;
@property (nonatomic, assign) double longitude;

@end

.

@implementation Place

@synthesize placeId;
@synthesize currentTime;
@synthesize name;
@synthesize latitude;
@synthesize longitude;

@end

现在初始化您的位置并将它们添加到将用作您的数据源的数组中。然后,当您设置单元格时,拉出该 indexPath 的位置并调整单元格。

实现 -tableView:willDisplayCell:forRowAtIndexPath: 并使用它将它们添加到您的 scrolledOver 数组中。为确保它们是唯一的,请将其更改为 NSMutableSet 或 NSMutableDictionary

于 2013-10-06T07:20:58.167 回答