【问题标题】:Best way for Search NSArray1 for value matching element in NSArray2在 NSArray 2 中搜索 NSArray 1 以获取值匹配元素的最佳方式
【发布时间】:2015-08-31 12:12:37
【问题描述】:

我对 iOS 开发完全陌生。

我有一个 NSArray1(parent array) 类似这样的元素:

( (name1,url-x,logo-x), (name2,url2,logo2),(name3,url-y, logo-y) )

NSArray2(child array) 的元素是这样的:

( (name1,des1,time1), (name1,des2,time2), (name1,des3, time3), (name2,des4,time4), (name2,des5,time5), (name2, des6,time6), (name3,des7,time7), (name3,des8,time8), (name3, des9,time9) )

我想将所有相关的NSArray2(child array) 元素放入NSArry1(Parent array),如下所示:

( (name1,url-x,logo-x,des1,time1,des2,time2,des3, time3), (name2, url2, logo2, des4, time4, des5, time5, des6, time6),  ... )

我该怎么做?

【问题讨论】:

  • 你真的应该切换到NSDictionary而不是使用数组:developer.apple.com/library/mac/documentation/Cocoa/Reference/…
  • 您是否考虑过使用对象来代替这个有点奇怪的解决方案?然后将对象保留在数组中。我不喜欢上面提到的NSDictionary 方式,因为对象更直接,易于阅读和以后维护。

标签: ios objective-c for-loop nsarray


【解决方案1】:

重构您的代码。使用对象而不是嵌套数组可能会更好。

例子:

@interface Object1 : NSObject
@property (nonatomic) NSString *name;
@property (nonatomic) NSArray <Object2 *> *objects2; // if you use Xcode 7
// @property (nonatomic) NSArray *objects2; // if you use earlier Xcode // array of Object2
@end

@implementation Object1
@end

还有一个班级:

@interface Object2 : NSObject
@property (nonatomic) NSUInteger des;
@property (nonatomic) NSDate time;
@end

@implementation Object2
@end

通过这种方式,您可以为给定名称保留尽可能多的 des/time 对,这对其他开发人员来说更具可读性,并且肯定会导致更少的错误、崩溃和错误。

稍后在代码中,您只需保留 Object1 的数组。

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多