वस्तुओं की सामग्री के आधार पर एनएसएआरएआरई से आइटम को कैसे हटाएं

मैं एनएसएसआरिंग्स का एनएसएआरआरई बना रहा हूं, हालांकि प्रवेश किए गए सरणी में से एक उद्धरण चिह्नों का एक सेट है

""

मैं अपने सरणी से इन्हें बाहर करने के लिए गर्म जानना चाहता हूं, मैंने भविष्यवाणी का उपयोग करने की कोशिश की है लेकिन यह काम नहीं कर रहा है।

यह मेरा कोड जैसा दिखता है।

NSString *tempSymbolsString = [tempAxesDictionary objectForKey:@"Symbols"];
        NSArray *tempSymbolsArray = [tempSymbolsString componentsSeparatedByString:@";"];
        tempSymbolsArray = [symbolsArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != """""]];
        NSLog(@"%@", tempSymbolsArray);

किसी भी सहायता की सराहना की जाएगी।

0

2 उत्तर

यह स्वयं करो:

NSString *tempSymbolsString = tempAxesDictionary[@"Symbols"];
NSMutableArray *symbolsArray = [[tempSymbolsString componentsSeparatedByString:@";"] mutableCopy];
for (NSUInteger i = symbolsArray.count; i > 0; i--) {
    if ([symbolsArray[i - 1] isEqualToString:@"\"\""]) {
        [symbolsArray removeObjectAtIndex:i - 1];
    }
}

अंत में symbolsArray में सभी मान होंगे "" से मेल खाने वाले सभी को छोड़कर।

बीटीडब्ल्यू - आपकी मूल भविष्यवाणी शायद भागने का एक गुच्छा की जरूरत है:

[NSPredicate predicateWithFormat:@"SELF != \"\\\"\\\"\""]
0
जोड़ा

वास्तव में इससे भी सरल है। चूंकि आपको केवल अपनी सरणी में स्ट्रिंग मिलती है, इसलिए एक म्यूटेबल कॉपी बनाएं और "" की सभी घटनाओं को हटा दें। ऐसा कुछ शायद:

NSMutableArray *temp = [tempSymbolsArray mutableCopy];
[temp removeObject:@"\"\""];

यह removeObject: के बाद से isEqual: के माध्यम से ऑब्जेक्ट की तुलना करेगा और किसी भी मैचों को हटा देगा।

0
जोड़ा
ठीक है, तो शायद मैं गलत हूँ। किसी कारण से यह मेरी सरणी दिखती है। 1, 2, 3, 4, "" और मुझे लगता है कि "" मेरे लूप को कई बार चलाने के लिए बना रहा है। लेकिन आपके द्वारा दिए गए कोड ने ""
जोड़ा लेखक HurkNburkS, स्रोत
ठीक है यह काम करता है। मुझे पता चला कि commaseperatedbystring एक है; अंत में .. तो फिर सरणी में कुछ भी नहीं जोड़ रहा है इसलिए मैंने अपनी गिनती में -1 जोड़ा।
जोड़ा लेखक HurkNburkS, स्रोत
ओह! सरणी के माध्यम से पुनरावृत्ति के मेरे दृष्टिकोण से यह आसान है। अच्छा निर्णय।
जोड़ा लेखक rmaddy, स्रोत
@HurkNburkS ऐसा लगता है कि आपके पास खाली स्ट्रिंग है, उद्धृत खाली स्ट्रिंग नहीं। कोड को [temp removeObject: @ ""]] में बदलें;
जोड़ा लेखक rmaddy, स्रोत
@rmaddy धन्यवाद!
जोड़ा लेखक Alladinian, स्रोत