将NSStrings附加到NSMutableArray

时间:2013-10-06 05:24:08

标签: iphone ios objective-c nsmutablearray

我正在尝试使用NSMutableArrays。我有一个显示项目列表的UITableView。我希望将某些变量(NSStrings)存储在一个数组中,因为一行被滚动过去。我可以使用NSLog执行此操作,但在设置NSMutableArray时遇到问题。这就是我目前的设置方式。

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

  • placeId
  • CURRENTTIME
  • TextForMyLabel
  • PlaceLatitude
  • PlaceLongitude

我想将它们存储在名为scrolledOver的NSMutableArray中。我想使用术语“key1,key2,key3 ...”来识别数组的元素。

在我的.h文件中,我声明了NSMutable数组:

@Interface viewController {
    NSMutableArray *scrolledOver;
}

@property (nonatomic, retain) NSMutableArray *scrolledOver;

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

2 个答案:

答案 0 :(得分:1)

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

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:placeId forKey:@"key1"];
[dict setObject:CurrentTime forKey:@"key2"];
....
[scrolledOver addObject:dict];

答案 1 :(得分: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