2015-02-03 3 views
5

पहले दो उदाहरण लिंक तीसरा काम कर रहे हैं रिटर्न शून्यस्विफ्ट: क्यों "NSURL (स्ट्रिंग:" है शून्य के साथ लौट रहा है, भले ही यह एक ब्राउज़र में कोई मान्य url है

क्यों NSUrl के लिए वापस आ रहा है नहीं के बराबर। ? ऐसे स्ट्रिंग, हालांकि यह एक ब्राउज़र में कोई मान्य url है

मैं स्ट्रिंग कार्रवाई करने के लिए माना जाता रहा हूँ और अधिक

यहाँ मेरी कोड है?

import UIKit 
import Foundation 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSXMLParserDelegate { 

var myFeed : NSArray = [] 
var url : NSURL! 
var feedURL : NSURL! 
var selectedFeedURL = String() 

@IBOutlet var tableFeeds: UITableView! 
@IBOutlet var webView: UIWebView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Set feed url. 
    //url = NSURL(string: "http://www.skysports.com/rss/0,20514,11661,00.xml")! //This seems to work 
    //url = NSURL(string: "http://www.formula1.com/rss/news/latest.rss")! //This seems to work 
    url = NSURL(string: "http://www.multirotorusa.com/feed/")! 

    loadRss(url); 
} 

func loadRss(data: NSURL) { 
    var myParser : XmlParserManager = XmlParserManager.alloc().initWithURL(data) as XmlParserManager 
    myFeed = myParser.feeds 

    tableFeeds.reloadData() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return myFeed.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 

    var dict : NSDictionary! = myFeed.objectAtIndex(indexPath.row) as NSDictionary 

    cell.textLabel?.text = myFeed.objectAtIndex(indexPath.row).objectForKey("title") as? String 
    cell.detailTextLabel?.text = myFeed.objectAtIndex(indexPath.row).objectForKey("description") as? String 
    return cell 
} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    var indexPath: NSIndexPath = self.tableFeeds.indexPathForSelectedRow()! 
    var selectedFeedURL = myFeed.objectAtIndex(indexPath.row).objectForKey("link") as String 
    selectedFeedURL = selectedFeedURL.stringByReplacingOccurrencesOfString(" ", withString:"") 
    selectedFeedURL = selectedFeedURL.stringByReplacingOccurrencesOfString("\n", withString:"") 

    // feedURL = NSURL(fileURLWithPath: selectedFeedURL) //This returns with: URL + /%09%09 -- file:/// 
    feedURL = NSURL(string: selectedFeedURL) //This returns with NIL 

    println("Selected Feed URL: \(selectedFeedURL)") 
    println("Feed URL: \(feedURL)") 

    if feedURL != nil { 
     let request : NSURLRequest = NSURLRequest(URL: feedURL!) 
     webView.loadRequest(request) 
     println("Feed URL: \(feedURL)") //Doesn't make it here 
    } 
    } 
} 

कोई सुझाव

+0

क्या आप वाकई वापस लौट रहे हैं? लगता है कि मेरे लिए बस ठीक काम करता है। – bjtitus

+0

यह तब भी हो सकता है जब URL में गैर-भागने वाले वर्ण हों, जिनमें पिछली जगह शामिल है ... – gone

उत्तर

8

आप इस तरह यूआरएल यूआरएल-सांकेतिक शब्दों में बदलना चाहिए:

selectedFeedUrl = selectedFeedUrl.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

+0

अपनी विधि का उपयोग करके मुझे यह मिल रहा है: http://www.multirotorusa.com/dji-phantom-dont-be -नॉयइंग /% 09% 09 लेकिन वेबपृष्ठ नहीं मिला। क्यों है: स्ट्रिंग के अंत में% 09% 09 और मैं इससे कैसे छुटकारा पा सकता हूं? –

+0

स्ट्रिंग के सिरों से सफेद जगह को ट्रिम करें। % 09 सिर्फ एक टैब है (\ t)। – fred02138

3

आपकी मदद के लिए आप लोगों को धन्यवाद। मैं अपने कोड के लिए इन दो पंक्तियों को जोड़ कर उसे अब काम करता है:

selectedFeedURL = selectedFeedURL.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)! 
    selectedFeedURL = selectedFeedURL.stringByReplacingOccurrencesOfString("%09%09", withString:"") 
5

आईओएस 9 में:

myString = myString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())! 

आशा है कि यह

+0

बहुत बहुत धन्यवाद, भाई। – Jerome

3

में मदद करता है swift3 के लिए आप इस

let url = URL(string:url.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!)! 
की तरह कर सकते हैं
संबंधित मुद्दे