在Swift中将字符串附加到NSMutableString

时间:2015-02-08 05:20:55

标签: swift nsmutablestring

我在Objective C中找到了我的问题的答案,但在Swift中找不到它。如何在将字符串值添加到NSMutableString方面使下面的代码工作?它会抛出仅为抽象类定义的长度"错误。

此代码旨在解析xml提要并将其写入NSMutableDictionary()

var ftitle = NSMutableString?()
func parser(parser: NSXMLParser!, foundCharacters string: String!) {
if element.isEqualToString("title") {
        ftitle?.appendString(string)
    }
}

修改:这是更多背景信息;

元素是NSString,在DidStartElement期间分配给解析器中的elementName。在这段代码中,我抓住了"标题"通过元素的饲料含量。

我有一个NSMutableDictionary(),它包含不同的NSMutableString(),例如ftitle。这段代码是将字符串添加到ftitle,这是NSMutableString,然后它将成为NSMutableDictionary的一部分,最后我将读取它来写入我的tableviewcells

这里是didStartElement方法:

func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!) {
    element = elementName

    if (element as NSString).isEqualToString("item"){
        elements = NSMutableDictionary.alloc()
        elements = [:]
        ftitle = NSMutableString.alloc()
        link = ""
        fdescription = NSMutableString.alloc()
        fdescription = ""
    }
}

2 个答案:

答案 0 :(得分:6)

ftitle = NSMutableString.alloc()

不是分配空字符串的正确方法。它分配了 NSMutableString没有初始化它。 NSMutableString是一个班级 群集,所以这可能会导致各种奇怪的错误。

在Swift中,你只会做

ftitle = NSMutableString()

或只是

ftitle = ""

出于同样的原因,

elements = NSMutableDictionary.alloc()

错了,应该是

elements = NSMutableDictionary()

答案 1 :(得分:2)

除非我完全误解了您的尝试,否则以下代码可能是一个更简洁的Swift实现。 用var声明的字符串是可变的。用'let'声明的字符串是不可改变的。不确定何时使用NSMutableString是合适的。也许你有一个混合的Swift / Obj-C项目。

    var ftitle = "" // declare ftitle as an empty string
var element = "" // this is coming from some other function
func parser(parser: NSXMLParser!, foundCharacters myString: String!) {
    if element == "title" {
        ftitle += myString // appends element to ftitle
    }
}