मैंने अभी उद्देश्य-सी सीखना शुरू कर दिया है और थोड़ा कम्पास ऐप बनाया है जो एक दिशा प्रदर्शित करेगा जब यह शीर्षक की एक श्रृंखला में आता है। यह ठीक काम करता है, लेकिन मुझे आश्चर्य है कि NSRange
का उपयोग करके इसे लिखने का एक और संक्षिप्त तरीका है या नहीं। बहुत सारे लगने के बाद, ऐसा लगता है कि NSRange
संख्याओं की बजाय स्ट्रिंग फ़ंक्शंस के लिए अधिक उपयोग किया जाता है।मैं अपने कोड को सरल बनाने के लिए पूर्णांक के साथ एनएसआरेंज का उपयोग कैसे कर सकता हूं?
मैंने NSRange
का एक संक्षिप्त उदाहरण बनाने के लिए अपना प्रारंभिक बिंदु बनाने का प्रयास किया, मैं उस कार्य को ट्रैक नहीं कर सका जो कि NSRange
के भीतर कोई संख्या गिरती है।
क्या मैं यहां सही रास्ते पर हूं, या क्या मैं इसे और अधिक वर्बोज़ बनाने की आवश्यकता है?
अग्रिम धन्यवाद ..
यहाँ था मेरी विफल बंद बिंदु ऊपर कोड को छोटा करने के प्रयास करने के लिए कूद:
// If heading falls within this range, then display "S" for south
NSRange eastenRange = NSMakeRange (80, 100);
NSRange southernRange = NSMakeRange (170, 190);
etc...
यहाँ मेरे वर्तमान कोड है (ठीक काम करता है):
- (void)locationManager:(CLLocationManager *)manager
didUpdateHeading:(CLHeading *)newHeading
{
// Define and display the heading
NSNumber *theHeading = [NSNumber numberWithInt:[newHeading trueHeading]];
[headingLabel setText:[NSString stringWithFormat:@"%@°", theHeading]];
// Define the range of directions
NSNumber *northLowerRange = [NSNumber numberWithInt:10];
NSNumber *northUpperRange = [NSNumber numberWithInt:350];
NSNumber *eastLowerRange = [NSNumber numberWithInt:80];
NSNumber *eastUpperRange = [NSNumber numberWithInt:100];
NSNumber *southLowerRange = [NSNumber numberWithInt:170];
NSNumber *southUpperRange = [NSNumber numberWithInt:190];
NSNumber *westLowerRange = [NSNumber numberWithInt:260];
NSNumber *westUpperRange = [NSNumber numberWithInt:280];
// If the heading falls within the correct ranges, then display the direction
if ([northLowerRange compare:theHeading] == NSOrderedDescending || [northUpperRange compare:theHeading] == NSOrderedAscending)
[directionLabel setText:@"N"];
else if ([eastLowerRange compare:theHeading] == NSOrderedAscending && [eastUpperRange compare:theHeading] == NSOrderedDescending)
[directionLabel setText:@"E"];
else if ([southLowerRange compare:theHeading] == NSOrderedAscending && [southUpperRange compare:theHeading] == NSOrderedDescending)
[directionLabel setText:@"S"];
else if ([westLowerRange compare:theHeading] == NSOrderedAscending && [westUpperRange compare:theHeading] == NSOrderedDescending)
[directionLabel setText:@"W"];
else
[directionLabel setText:@"-"];
}
यह पूर्णांक के बजाय वास्तुकला स्वतंत्र NSInteger और NSUInteger उपयोग करने के लिए कोको और कोको टच में आम तौर पर बेहतर है। – Chuck
@Chuck: ठीक है। लेकिन ओपी '+ numberWithInt: 'का उपयोग करता है, इसलिए मैं कोड में' int' रखता हूं। – kennytm
धन्यवाद, @ केनीटीएम। अब बहुत साफ है। @ चक - ने एनएसयूइंटर पर अपनी टिप ली और इसका भी इस्तेमाल किया। मैंने शुरुआत में नंबर का उपयोग किया था: क्योंकि यह अपवाद नहीं फेंक दिया, इसलिए मैंने इसे रखा। –