0

以下の例のように、辞書の配列 (貸与アイテム用) を既に取得しています。

(
    {
    BIBNo = 291054;
    date = "10/08/2012";
    itemSequence = 000010;
    name = "iPhone application development for IOS 4 / Duncan Campbell.";
    noOfRenewal = 1;
    number = 000291054;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
},
    {
    BIBNo = 187883;
    date = "13/08/2012";
    itemSequence = 000010;
    name = "Positive thinking / Susan Quilliam.";
    noOfRenewal = 2;
    number = 000187899;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
},
    {
    BIBNo = 290408;
    date = "13/08/2012";
    itemSequence = 000010;
    name = "Sams teach yourself iPhone application development in 24 hours / John Ray.";
    noOfRenewal = 1;
    number = 000290408;
    status = "Normal Loan";
    time = "24:00";
    type = Loans;
})

そして今、日付をセクションとして、行を日付に応じてセクションに分類して、それらをテーブルに挿入する必要があります。私は多くのチュートリアルを経験しましたが、ほとんどのチュートリアルでは、次のようなセクションと行の静的ハードコードを使用しています。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == 0){
    return 1;
}
else if (section == 1){
    return 5;
} }

貸与品の配列は動的であるため、特定の値を返すように行やセクションをハードコードすることはできません。動的な値を返すことができるようにするには、どうすればよいか誰でも強調できますか? 可能であれば、例をいただければ幸いです。皆さんありがとう :)

4

3 に答える 3

1

このような場合、アイテムを日付でフィルタリングする NSOperation をコーディングしました (キーが日付で、各値がアイテムの配列である辞書)。次に、辞書の allkeys 配列を取得してセクションを取得し、セクションごとに行配列を取得します。 objectForKey と日付を使用します。

フィルタリングするには、NSPredicate を使用するなどの多くの方法を使用できます ...

NSOperation が終了し、コードがディクショナリの準備ができたという通知を受け取ったら、reloadData を呼び出して、必要に応じてテーブルを編成します。

于 2012-07-25T08:12:54.757 に答える
0

次のコードは参考用です。これarrayはあなたが投稿した配列で、mutDic@ Esses77が言及した辞書です

NSArray *array;

NSMutableArray *dateArr = [NSMutableArray array];

// dateArr is used to collect all the date in your array
for (NSDictionary *dic in array) {
    [dateArr addObject:[dic valueForKey:@"date"]];
}


//the following code is used to remove all the duplicate date
NSArray *copy = [dateArr copy];

NSInteger index = [copy count] - 1;

for (id object in [copy reverseObjectEnumerator])
{

    if ([dateArr indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound)

    {
        [dateArr removeObjectAtIndex:index];

    }

    index--;
}

//group all the dictionaries with the same date in mutDic. and key is the date, object is the array of dictionaries with the same date
NSMutableDictionary *mutDic = [NSMutableDictionary dictionary];

for (NSString *date in dateArr) {

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date like %@", date];

    [mutDic setValue:[array filteredArrayUsingPredicate:predicate] forKey:date];

 }

セクションの数は mutDic のキーの数であり、行の数は対応するオブジェクト (配列) です。

于 2012-07-25T08:42:59.353 に答える
0

たとえば、質問で上記に表示されたデータによると、辞書の可変配列があると思います:arrayOfMydata

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return 8;

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
 {
     return [arrayOfMydata count];

 }


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{

     NSDictionary *tempDictionary  =  [arrayOfMydata objectAtIndex:section];
     NSString *sectionString       =  [tempDictionary objectForKey:@"date"];
     return sectionString;
 }

これがあなたを助けることを願っています

于 2012-07-25T08:25:26.753 に答える