gpt4 book ai didi

ios - 将数据从 TableViewController 传递到解析器

转载 作者:行者123 更新时间:2023-11-29 01:37:54 24 4
gpt4 key购买 nike

在我的应用开发过程中,我遇到了一个具体问题。我有一个包含以下列的数据库:Dossier_Title、Dossier_Name、Dossier_Category 和 Dossier_Description。每个 Dossier 的描述都是唯一的。

  1. 首先,我调用我的 WebService,它选择唯一的 Dossier_Title 并形成一个 xml 页面。在该应用程序解析此页面并在表格 View 中形成许多独特的单元格之后。它还形成一个由 Dossier_Title 和 Dossier_category 组成的数组。
  2. 现在我想根据我在上一步中获得的 Dossier_Category 创建一个新的 tableView,其中包含 Dossier_Name 和 Dossier_Description。为此,我想调用一个新的 WebService 并使用该类别作为条件对其进行解析。

我的问题是:如何将 Dossier_category 传递给我的第二个解析器以便将其用作条件?这是我的第一个解析器代码,我假设第二个解析器代码与添加一些新条件后几乎相同

class DossierParser: NSObject, NSXMLParserDelegate {


var parser = NSXMLParser()
var feeds = NSMutableArray()
var elements = NSMutableDictionary()
var element = NSString()
var ftitle = NSMutableString()
var link = NSMutableString()
var fdescription = NSMutableString()
var fdate = NSMutableString()
var fcategory = NSMutableString()

// initilise parser
/*
func initWithURL(url :NSURL) -> AnyObject {
startParse(url)
return self
}
*/
init(URL: NSURL){
super.init()
startParse(URL)
}



func startParse(url :NSURL) {
feeds = []
parser = NSXMLParser(contentsOfURL: url)!
parser.delegate = self
parser.shouldProcessNamespaces = false
parser.shouldReportNamespacePrefixes = false
parser.shouldResolveExternalEntities = false
parser.parse()
}

func allFeeds() -> NSMutableArray {
return feeds
}
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {

self.element = elementName

if self.element == "News" {
elements = NSMutableDictionary()
elements = [:]
ftitle = NSMutableString()
ftitle = ""
fdescription = NSMutableString()
fdescription = ""
fdate = NSMutableString()
fdate = ""
fcategory = NSMutableString()
fcategory = ""

}
}

func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {

if (elementName as NSString).isEqualToString("News") {
if ftitle != "" {
elements.setObject(ftitle, forKey: "DosNum")
}
if fcategory != "" {
elements.setObject(fcategory, forKey: "Dossier_number")
}




if fdate != "" {
elements.setObject(fdate, forKey: "Date_Text")
}

feeds.addObject(elements)
}

}
func parser(parser: NSXMLParser, foundCharacters string: String?) {

if element.isEqualToString("DosNum") {
ftitle.appendString(string!)

}else if element.isEqualToString("Date_Text") {
fdate.appendString(string!)

}else if element.isEqualToString("Dossier_number"){
fcategory.appendString(string!)
}

}

这是我的第一个 TableView 代码。

var myFeed : NSArray = []
var url: NSURL = NSURL()

override func viewDidLoad() {
super.viewDidLoad()

// Cell height.
self.tableView.rowHeight = 70
self.tableView.dataSource = self
self.tableView.delegate = self

//url = NSURL(string: "https://www.kpmg.com/_layouts/feed.aspx?xsl=1&web=/RU/ru/IssuesAndInsights/RSSFeeds&page=207b36b2-20f7-407f-a9ec-a09f191fd84b&wp=9810a349-6086-489d-ad03-40c06f6669f6")!
//url = NSURL(string: "http://www.skysports.com/rss/0,20514,11661,00.xml")!
// url = NSURL(scheme: "https", host: "www.kpmg.com", path: "/_layouts/feed.aspx?xsl=1&web=/RU/ru/IssuesAndInsights/RSSFeeds&page=207b36b2-20f7-407f-a9ec-a09f191fd84b&wp=9810a349-6086-489d-ad03-40c06f6669f6")!
//(scheme: "http", host: "10.207.203.216", path: "/AppWebservice/Service1.asmx/getNewsData")!
url = NSURL(string: "http://10.207.206.74/AppWebservice/Service1.asmx/getUniqDossier")!
// Call custom function.
loadRss(url);

}

override func viewWillAppear(animated: Bool) {


super.viewWillAppear(animated)

self.navigationItem.title = ""


let backImg:UIImage! = UIImage(named: "backPicture.png")


self.navigationItem.backBarButtonItem =
UIBarButtonItem(image:backImg, style:.Plain, target:self, action:nil);

let navBgImage:UIImage = UIImage(named: "express.png")!
self.navigationController?.navigationBar.setBackgroundImage(navBgImage, forBarMetrics: .Default)
}


func loadRss(data: NSURL) {


let myParser = DossierParser(URL: data)

myFeed = myParser.feeds

tableView.reloadData()
}



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

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {



if segue.identifier == "openPage" {

let indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow!
let selectedFTitle: String = myFeed[indexPath.row].objectForKey("DosNum") as! String
let selectedFContent: String = myFeed[indexPath.row].objectForKey("Dossier_number") as! String
// Instance of our feedpageviewcontrolelr
let fpvc: FeedPageViewController = segue.destinationViewController as! FeedPageViewController
fpvc.selectedFeedTitle = selectedFTitle
fpvc.selectedFeedFeedContent = selectedFContent
}
}


// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

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


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

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

let chevron = UIImage(named: "Next4.png")
cell.accessoryType = .DisclosureIndicator
cell.accessoryView = UIImageView(image: chevron!)
cell.textLabel?.textColor = UIColor.blackColor()
// Feeds dictionary.
var dict : NSDictionary! = myFeed.objectAtIndex(indexPath.row) as! NSDictionary

// Set cell properties.
cell.textLabel?.text = myFeed.objectAtIndex(indexPath.row).objectForKey("DosNum") as? String







cell.detailTextLabel?.text = myFeed.objectAtIndex(indexPath.row).objectForKey("Date_text") as? String

return cell

}

我将不胜感激任何形式的帮助。我猜应该有更简单的解决方法,但我不知道,所以如果有人有建议那就太好了!

谢谢!

最佳答案

我相信您会希望保留 fCategory 的实例并通过 init 将其传递给第二个解析器类。

第二个解析器类应具有以下内容,以允许传入 fcategory 并在本地存储以供解析器使用。

let fcategory = NSMutableString()
let URL = NSURL

init(URL: NSURL, category: String){
super.init()

self.URL = URL
self.fcategory = category

self.startParse(URL, fcategory)
}

关于ios - 将数据从 TableViewController 传递到解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com