在 Xcode 7 Swift 2 中将字符串与数组分开以供 HTML 使用

Posted

技术标签:

【中文标题】在 Xcode 7 Swift 2 中将字符串与数组分开以供 HTML 使用【英文标题】:Separate Strings from Array for HTML use in Xcode 7 Swift 2 【发布时间】:2015-12-16 19:14:15 【问题描述】:

我使用的是 Xcode 7.1 和 Swift 2。我有一个 array var ingredientsList: [String] = [],其中包含显示在 UITableView 中的数据。我想将array 中的每个String 分开并分配给一个新的string 变量,以便稍后添加到一些html。我看了here,很困惑,还处理了int。我尝试将它与我的一起应用,但显然使用string 代替但它不起作用。有人可以帮帮我吗?数组数据的一个示例是:cheese, pepperoni, sauce, olives, onions, sausage。谢谢。

我的ViewControllerUITableView 是:

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

    let cellIdentifier = "IngredientTableViewCell"

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! IngredientTableViewCell

    cell.ingredientLabel.text = ingredientsList[indexPath.row]

    // TOTAL of 50 ingredients Max
    if indexPath.row == 0 
        if ingredientsList[0] != "" 
            ingredientItem0 = ingredientsList[0]
        
    
    if indexPath.row == 1 
        if ingredientsList[1] != "" 
            ingredientItem1 = ingredientsList[1]
        
    
    if indexPath.row == 2 
        if ingredientsList[2] != "" 
            ingredientItem2 = ingredientsList[2]
        
    
    if indexPath.row == 3 
        if ingredientsList[3] != "" 
            ingredientItem3 = ingredientsList[3]
        
    
    if indexPath.row == 4 
        if ingredientsList[4] != "" 
            ingredientItem4 = ingredientsList[4]
        
    
    if indexPath.row == 5 
        if ingredientsList[5] != "" 
            ingredientItem5 = ingredientsList[5]
        
    

    // ... it goes all the way down to a total of 50 ingredients

    return cell


我有一个UIBarButtonItem,它执行将[String] 数据导出为PDF 并允许用户通过电子邮件发送出去的操作。

我的导出代码是:

    let html =
    /*HEADING*/"<head><center><br><h1><b>** <u>\(nameTextField.text!)</b></u> **</h1></br></center></head>" +
    /*DIVIDER*/"<center>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</center>" +
    /*BODY*/"<p><font size=5><br>\(ingredientItem0)</br> <br>\(ingredientItem1)</br> <br>\(ingredientItem2)</br> <br>\(ingredientItem3)</br> <br>\(ingredientItem4)</br> <br>\(ingredientItem5)</br> ... <br>\(ingredientItem49)</br></font></p>"

    let fmt = UIMarkupTextPrintFormatter(markupText: html)

    // Assign print formatter to UIPrintPageRenderer

    let render = UIPrintPageRenderer()
    render.addPrintFormatter(fmt, startingAtPageAtIndex: 0)

    // Assign paperRect and printableRect

    let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi
    let printable = CGRectInset(page, 0, 0)

    render.setValue(NSValue(CGRect: page), forKey: "paperRect")
    render.setValue(NSValue(CGRect: printable), forKey: "printableRect")

    // Create PDF context and draw

    let pdfData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil)

    for i in 1...render.numberOfPages() 

        UIGraphicsBeginPDFPage();
        let bounds = UIGraphicsGetPDFContextBounds()
        render.drawPageAtIndex(i - 1, inRect: bounds)
    

    UIGraphicsEndPDFContext();

现在,在我上面的UITableView 代码中,我将每个indexPath.row 分配给我创建的String variable。我设置了多达 50 种成分。我不喜欢我设置了一个限制,如果用户只有 4 种成分或超过 50 种成分。在我的 pdf 导出中,它的行为就像有 50 种并为它们打印空白行。因此,一个可能很短的食谱将包含我分配的空白成分中不存在的空白页面。有道理?很丑,但我不知道该怎么做。

【问题讨论】:

你能添加一个sn-p的代码吗? 请参阅上面的编辑。有些地方很丑。 【参考方案1】:

For 循环遍历导出代码中的成分列表,并将包装成分列表项的 html 附加到 html

 var html =
/*HEADING*/"<head><center><br><h1><b>** <u>\(nameTextField.text!)</b></u> **</h1></br></center></head>" +
/*DIVIDER*/"<center>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</center>" +
/*BODY*/"<p><font size=5>"

 for var i = 0; i < ingredientsList.length; i++ 
    html += "<br>\(ingredientsList[i] as String)</br> "
 

类似的东西....

【讨论】:

我做了一些调整,但效果很好。谢谢。 @ChallengerGuy 很高兴能提供帮助

以上是关于在 Xcode 7 Swift 2 中将字符串与数组分开以供 HTML 使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS中将字符串转换为xml? (目标 C,xcode 7.2)

当我在 Xcode 11 中将 swift 4.2 转换为 swift 5 时继续加载

在 Swift/Xcode 中将 JSON 文件转换为数组

如何在 Xcode 中将 Swift 版本从 5 更改为 4?

在 Xcode 6 中将 .storyboard 文件转换为原始 swift 代码

在 Swift 3 中将 JSON 字符串转换为字典