2011-03-01 10 views
15

मैं यहाँ पागल हो रहा हूँ। किसी कारण से मुझे ऑब्जेक्ट्स का उपयोग करने का एक उदाहरण, पूर्ण उदाहरण नहीं मिल रहा है। PassingTest: NSSet (कोको) का कार्य। किसी ने मुझे ब्लॉक के बारे में पृष्ठों पर इंगित करने से पहले, मैंने उनको देखा है। दिया गया उदाहरण केवल दिखाता है कि फ़ंक्शन को कैसे घोषित किया जाए, न कि उस ब्लॉक को संचालित करता है, और जब मैंने अपने कोड के साथ अपना उदाहरण करने की कोशिश की तो यह काम नहीं किया। मैं सिर्फ कुछ कामकाजी उदाहरण देखना चाहता हूं कि फ़ंक्शन का उपयोग कैसे किया जा सकता है, फिर मैं इसे अपने लिए काम करने में सक्षम हूं।एनएसएसटी की ऑब्जेक्ट्स का उदाहरण कृपया पैसिंगटेस्ट फ़ंक्शन कृपया?

उत्तर

30

यहां एक त्वरित उदाहरण है। आशा करता हूँ की ये काम करेगा।

NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5",nil]; 

    NSLog(@"%@",set); // Output (3,1,4,2,5) ... all objects 

    NSSet *o = [set objectsPassingTest:^(id obj,BOOL *stop){ 
     NSString *so = (NSString *)obj; 
     int intval = [so intValue]; 
     // accept objects less or equal to two 
     BOOL r = (intval <= 2); 
     return r; 
    }]; 

    NSLog(@"%@",o); // Output (1,2) only objects smaller or equal to 2 
+0

धन्यवाद, जो बहुत मदद करनी चाहिए। मैंने काम पर रहते हुए 'जैसा है' पहले कोशिश की, अब इसे अपने कोड पर आज़माकर अनुकूलित करने के लिए। अजीब बात यह है कि, मुझे यकीन है कि मैंने इस विधि की कोशिश की लेकिन नेस्टेड फ़ंक्शंस और डॉट सिंटैक्स के अधिक उपयोग के साथ, तो हो सकता है कि मेरी समस्या थी। – Ash

4

मैंने कभी भी ब्लॉक का उपयोग नहीं किया। लेकिन मुझे लगता है कि यह इस तरह काम करता है।

NSSet *set = [NSSet setWithObjects:@"FooBar", @"Foo", @"Bar", @"Baz", nil]; 

NSSet *fooSet = [set objectsPassingTest:^(id obj, BOOL *stop) { 
    BOOL testResult = NO; 
    NSString *objStr = (NSString *)obj; 
    if ([objStr hasPrefix:@"Foo"]) { 
     testResult = YES; 
    } 
    if ([objStr hasSuffix:@"Bar"]) { 
     testResult = YES; 
    } 
    return testResult; 
}]; 

क्योंकि केवल उन टेस्ट पास यह, @ "foobar" के साथ एक सेट का निर्माण करेगा @ "फू" और @ "बार", (यानी लौट हाँ)।

संबंधित मुद्दे