2011-10-18 28 views
8

में RegexKitLite मुझे स्ट्रिंग सत्यापन के हिस्से के रूप में मेरी ऐप में RegexKitlite की आवश्यकता है। ने libicucore.A.dylib भी जोड़ा है। वर्तमान में xcode 4.2, बेस एसडीके आईओएस 5.0, ऐप्पल एलएलवीएम कंपाइलर 3.0, आर्किटेक्चर armv7 के साथ काम कर रहा है। मेरे ऐप पर regexkit फ़ोल्डर जोड़ना, स्वत: संदर्भ गिनती त्रुटियाँ तरह भी कई त्रुटियों का कारण बनता है, सी सूचक प्रकार के ऑब्जेक्टिव-सी सूचक प्रकार के कास्ट 'NSString *' 'CFStringRef' आदिआईओएस 5

मदद करें; मैं कहाँ है गलत हो गया।

उत्तर

0

आप कुछ भी गलत नहीं कर रहे हैं। Regexkit को अभी तक आईओएस 5 में अपडेट नहीं किया गया है। आईओएस 5 में बड़ा बदलाव अब नहीं रहता है, रिलीज करता है, या ऑटोरेलीज़ नहीं करता है। प्रत्येक मेमोरी चीज जावा की तरह स्वचालित है। (सिवाय इसके कि यह रन टाइम के बजाय संकलन समय पर होता है। तो यह अवधारणात्मक रूप से जावा की तरह होता है। अधिकतर।)

वैसे भी, रेगेक्सकिट को अपडेट करने के लिए प्रतीक्षा करने के बजाय आप NSRegularExpression का उपयोग कर सकते हैं। ऐप्पल सामान का उपयोग भविष्य के सबूत भी है क्योंकि वे अपने स्वयं के सामान को संस्करण में अद्यतन संस्करण रखते हैं।

शुभकामनाएं!

+0

यह जावा जैसा नहीं है;) की तरह ... आधुनिक में एक आकर्षण की तरह नहीं सब पर –

0

सीबी ग्राहम सही है। वैकल्पिक रूप से, आप स्वत: संदर्भ गणना (परियोजना> बिल्ड सेटिंग्स> स्वचालित संदर्भ गिनती 'के लिए खोज) अक्षम कर सकते हैं।

आप स्पष्ट रूप से मैनुअल संदर्भ गिनती करना होगा, लेकिन RegexKitLite अब निर्माण करना चाहिए ...

33

तुम भी केवल एक ध्वज जोड़कर RegexKitLite के लिए एआरसी निष्क्रिय कर सकते हैं:

परियोजना का चयन -> आपका लक्ष्य -> ​​"बिल्ड चरण" टैब पर और "संकलन स्रोत" खोलें और "RegexKitLite.m" ध्वज "-फनो-ओबीजेसी-आर्क" के लिए जोड़ें।

अद्यतन: तो आपको मिलेगा:

अपरिभाषित प्रतीक: "_uregex_reset", से संदर्भित: RegexKitLite.o "_uregex_appendTail", से संदर्भित में RegexKitLite.o _rkl_replaceAll में _rkl_splitArray: .... ...

तो फिर तुम टैब में जोड़ने के "सेटिंग बनाएँ" करने की जरूरत है -> "लिंक करना" -> "अन्य लिंकर झंडे" "-licucore"

+0

वर्क्स ... – emreoktem

+0

बार, आपको पुस्तकालयों के साथ लिंक बाइनरी जाना चाहिए और "libicucore.dylib" जोड़ें – seo

0

मैं RegexKitLite वहाँ दो तरीकों के साथ बदल दिया।

स्ट्रिंग परिणाम:

+(NSString*) regExString: (NSString *) pattern withString: (NSString *) searchedString { 
    NSError *error = nil; 
    NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
    NSTextCheckingResult *match = [regex firstMatchInString:searchedString options:0 range: NSMakeRange(0, [searchedString length])]; 
    if ([searchedString substringWithRange:[match rangeAtIndex:1]]) { 
     return [searchedString substringWithRange:[match rangeAtIndex:1]]; 
    } else { 
     return @""; 
    } 
} 

परिणाम सरणी:

+(NSArray *) regExArray:(NSString *) pattern withString: (NSString *) searchedString { 
    NSMutableArray *results = [[NSMutableArray alloc] init]; 
    NSError *error; 
    NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
    NSArray* matches = [regex matchesInString:searchedString options:0 range: NSMakeRange(0, searchedString.length)]; 

    for (NSTextCheckingResult* match in matches) { 
     NSMutableArray *result = [NSMutableArray array]; 
     NSRange matchRange = [match range]; 
     NSString *numString = [searchedString substringWithRange:matchRange]; 
     [result addObject:numString]; 

     for (int i=1;i < (int)match.numberOfRanges;i++) { 
      NSRange range = [match rangeAtIndex:i]; 
      @try { 
       NSString *numString = [searchedString substringWithRange:range]; 
       [result addObject:numString]; 
      } 
      @catch (NSException *exception) { 
       [result addObject:[NSNull null]]; 
      } 
     } 
     [results addObject:result]; 
    } 
    return results; 
}