2010-01-22 15 views
6

मैं मूल्यों में iPhone में एप्लिकेशन खोलने के लिए एक कस्टम यूआरएल विभाजित करने के लिए चाहते हैं, मेरी योजना होगा कुछ की तरह:सबसे अच्छा तरीका महत्व देता

appname://user=jonsmith&message=blah%20blah 

मैं कहाँ होना चाहते हैं दो उपयोगकर्ता के रूप में "उपयोगकर्ता" और "संदेश" प्राप्त करने में सक्षम। सर्वोत्तम दृष्टिकोण पर कोई सलाह?

+0

KennyTM के रूप में बताया, काम करने के लिए अपने जवाब के लिए, आप आवश्यकता होगी एक प्रश्न चिह्न जोड़ने के लिए। बेहतर अभी तक एक और स्लैश जोड़ें: ऐपनाम: ///? उपयोगकर्ता = जॉन्समिथ और संदेश = blah% 20blah –

+0

कोई समस्या नहीं - बेहतर आसान :) – mootymoots

उत्तर

6

मान लिया जाये कि आपके यूआरएल है एक NSURL वस्तु में url कहा जाता है:

NSMutableDictionary *queryParams = [[NSMutableDictionary alloc] init]; 
NSArray *components = [[url query] componentsSeparatedByString:@"&"]; 

for (NSString *component in components) { 
    NSArray *pair = [component componentsSeparatedByString:@"="]; 

    [queryParams setObject:[[pair objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding: NSMacOSRomanStringEncoding] 
        forKey:[pair objectAtIndex:0]]; 
} 

... 

[queryParams release]; 
+0

+1 यह है कि मैं इसे कैसे करूँगा। –

+1

काम नहीं करेगा, क्योंकि उसका यूआरएल 'appname: // user = jonsmith और message = blah% 20blah' है, 'appname: //? User = jonsmith और message = blah% 20blah'। (मैं मानता हूं कि उत्तरार्द्ध एक बेहतर विकल्प है।) – kennytm

+0

धन्यवाद, यह सबसे कम लागत की तरह लगता है - क्या यूआरएल एनकोड% 20 को रिवर्स करने का एक त्वरित तरीका है? – mootymoots

-1
NSString* yourString = @"appname://user=jonsmith&message=blah%20blah"; 
NSString* queryString = [yourString substringFromIndex:strlen("appname://")]; 
NSArray* queryArray = [queryString componentsSeparatedByString:@"&"]; 
NSMutableDictionary* queryDict = [NSMutableDictionary dictionary]; 
for (NSString* query in queryArray) { 
    NSUInteger indexOfEqualsSign = [query rangeOfString:@"="].location; 
    if (indexOfEqualsSign != NSNotFound) { 
     NSString* key = [[query substringToIndex:indexOfEqualsSign] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
     NSString* value = [[query substringFromIndex:indexOfEqualsSign+1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
     [queryDict setObject:value forKey:key]; 
    } 
} 
return queryDict; 

यदि आपको अधिक मेमोरी बचाने की आवश्यकता है तो NSScanner का उपयोग करें।

1

उपयोग Google की gtm_dictionaryWithHttpArgumentsString NSDictionary श्रेणी

http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMNSDictionary%2BURLArguments.h

+0

मैं इस फ़ाइल की नामकरण शैली को नापसंद करता हूं, लेकिन अन्यथा यह बहुत अच्छा किया जाता है। लिंक के लिए धन्यवाद! – miho

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