2016-03-28 5 views
1

として、私は構造を持っている:私はそのために、transactionReferenceNoに関して重複を削除する必要がObjective CにNSDictionaryを持つNSArrayのNSPredicateを設定する方法を教えてください。

この中
[ 
{ 
    "time": { 
    "td": 3036 
    }, 
    "creditCardType": { 
    "cardType": "MasterCard", 
    "default": false 
    }, 
    "transactionid": { 
    "transactionReferenceNo": "xyz", 
    "amount": 11.62, 
    "transactionStatus": "SUCCESS" 
    } 
}, 
{ 
    "time": { 
    "td": 3037 
    }, 
    "creditCardType": { 
    "cardType": "MasterCard", 
    "default": false 
    }, 
    "transactionid": { 
    "transactionReferenceNo": "xyp", 
    "amount": 13.62, 
    "transactionStatus": "SUCCESS" 
    } 
    } 
] 

私のように述語がある設定:この意志は私のアプリがクラッシュし、私にエラーを与える

NSDictionary *transactionDict = [dict valueForKey:@"transactionid"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY %K.%K CONTAINS[c] %@", @"transactionid", @"transactionReferenceNo",[transactionDict valueForKey:@"transactionReferenceNo"]];` 

The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet. 

間違って何メートルやっ..

ありがとうございます。

答えて

1
NSArray *arr = @[ 
       @{ 
        @"time": @{ 
         @"td": @3036 
        }, 
        @"creditCardType": @{ 
         @"cardType": @"MasterCard", 
         @"default": @NO 
        }, 
        @"transactionid": @{ 
         @"transactionReferenceNo": @"xyz", 
         @"amount": @(11.62), 
         @"transactionStatus": @"SUCCESS" 
        } 
       }, 
       @{ 
        @"time": @{ 
         @"td": @3037 
        }, 
        @"creditCardType": @{ 
         @"cardType": @"MasterCard", 
         @"default": @NO 
        }, 
        @"transactionid": @{ 
         @"transactionReferenceNo": @"xyp", 
         @"amount": @(13.62), 
         @"transactionStatus": @"SUCCESS" 
        } 
       } 
       ]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
          @"transactionid.transactionReferenceNo CONTAINS[c] %@", 
          @"xyp"]; 

NSArray *arr2 = [arr filteredArrayUsingPredicate:predicate]; 
NSLog(@"arr2 = %@", arr2); 

をお試しください:

NSPredicate *predicate = [NSPredicate predicateWithFormat: 
          @"transactionid.transactionReferenceNo CONTAINS[c] %@", 
          transactionDict[@"transactionReferenceNo"]]; 
+0

この作品..おかげでマイケル – PiyushRathi

0

述語は、このようにする必要があり、あなたの場合には、この

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"transactionid %K.%K CONTAINS[c] %@", @"transactionid", @"transactionReferenceNo",[transactionDict valueForKey:@"transactionReferenceNo"]]; 
+0

が解決しない、これは述語オブジェクトにクラッシュします。.. – PiyushRathi

+0

が編集を参照してください答え –

関連する問題