1

私のアプリでは、サーバーからの応答を取得してNSArrayいますNSDictionaries。オブジェクトが存在するかどうかを確認するために、次のようにします。

for (int i = 0; i < appDelegate.currentUser.userSiteDetailsArray.count; i++){

   NSDictionary *tmpDictionary = [appDelegate.currentUser.userSiteDetailsArray objectAtIndex:i];

   if ([[tmpDictionary valueForKey:@"webpropID"] isEqualToString:tmpWebproperty.identifier]){
       needToCheck = NO;
   }

   if (i == appDelegate.currentUser.userSiteDetailsArray.count - 1 && ![[tmpDictionary valueForKey:@"webpropID"] isEqualToString:tmpWebproperty.identifier] && needToCheck){
 // It means it's the last object we've iterated through and needToCheck is still = YES;
        //Doing stuff here
     }
  }

BOOLこの繰り返しはメソッド内で何度も行われ、returnそれを停止するために使用できないため、値を設定しました。このチェックを実行するためのより良い方法があると思います。それについての提案を聞きたいと思います。

4

2 に答える 2

1
BOOL needToCheck = YES;
for (int i = 0; i < appDelegate.currentUser.userSiteDetailsArray.count; i++){
    NSDictionary *tmpDictionary = [appDelegate.currentUser.userSiteDetailsArray objectAtIndex:i];
    if ([[tmpDictionary valueForKey:@"webpropID"] isEqualToString:tmpWebproperty.identifier]){
        needToCheck = NO;
        break;
    }
 }

 if (needToCheck) {
     //Doing stuff here
 }

しかし、他の人が言ったように、最初にチェックする別の NSSet に「要約」を保持し、すべての辞書をスピンすることができます。

于 2013-09-02T15:38:52.643 に答える