0

myMutableArray にいくつかのデータを追加しました。

- (void)calculate {

    DataObject* pObj = [DataObject objStart:(dataStart) 
                                     objEnd:(dataEnd) 
                                     objDay:(day)];

    [self.myMutableArray addObject:pObj];
}

次に、日 (int) のみを抽出し、すべての値を合計する必要があります。みたいなことを考えていたのですが、日だけの抽出方法が抜けていて…

  for(id *tObj in self.myMutableArray) {
    // day = day + day
 }

DataObject は次の場所に実装されています。

   @implementation DataObject

+ (id)objStart:(NSDate*)objStart objEnd:(NSDate*)objEnd objDay:(int)objDay {

DataObject *dataObject = [[self alloc] init];
dataObject.objStart = objStart;
dataObject.objEnd = objEnd;
dataObject.objDay = objDay;
return dataObject;
}
@end
4

2 に答える 2

1

cocoa がキー値のコーディングで提供する、洗練された非常に優れたソリューションが 1 つあります。詳細については、http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html をご覧ください

私はあなたのモデルについて本当に理解していませんが、私自身のモデルがあなたに解決策を提供すると思います.

次のようなDataという名前のモデルがあるとします。

@interface Data:NSObject
  @property(nonatomic, strong) NSString *name;
  @property(nonatomic) int day;
@end
@implementation Data
  @synthesize name, day;
@end

ここで、いくつかのクラスで、データ オブジェクトのインスタンスを作成し、それを配列に追加します。

NSMutableArray *myArray = [NSMutableArray array];
Data *data =[ [Data alloc] init];
data.name = @"First Name";
data.day = 10;
[myArray addObject:data];
data = [[Data alloc] init];
data.name = @"Second Name";
data.day = 20;
[myArray addObject:data];

これで、このアレイを使用して kvc ゲームをプレイできます。

[myArray valueForKey:@"name"]

新しい配列を次のように与えます;

(First Name, Last Name)

[myArray valueForKey:@"day"]与える;

(10, 20 )

そして、すべての日の合計については、次のようにします。

[myArray valueForKeyPath:@"@sum.day"]すると 30 になります。

それでおしまい。あなたの質問をよく理解したと思います。;)

于 2012-11-27T19:05:47.443 に答える