gpt4 book ai didi

ios - 从 XML 数据中的字符串创建类别

转载 作者:行者123 更新时间:2023-11-28 15:10:41 33 4
gpt4 key购买 nike

我到处都看了,但没有看到任何与我想要实现的目标相关的东西,尤其是 iOS/swift。我想根据我在我的应用程序中调用的 XML 解析器请求创建年龄类别。

必须从 xml 数据中的标记调用年龄信息:

<item>
<description>ANTHONY JOHNSON, Age: 17 From: PEORIA, IL</description></item>

我已经打电话来获取完整的描述标签:

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

if elementName == "description" {
self.person.desc = self.foundCharacters; }

if elementName == "item" {
tempData.desc = self.person.desc; }

项目类别:

 class Item { 
var desc = "";
}

我只需要根据年龄值进行分类。我计划将它们与枚举一起使用:

enum ageCategories: String {

case ageUnder10 = "Age 10 and under"
case age10Plus = "Age 10-15"
case age15Plus = "Age 15+"
}

我的问题是:

  • 我是否在 XML 解析器中调用以获取年龄?我将如何组织调用以仅获取描述字符串的年龄部分并将它们分类?

  • 有没有一种更简单的方法可以从我已经在 XML 解析器中调用的字符串中调用年龄,然后用它来创建类别?即:replacingOccurrences(range searchRange:"Age")

最佳答案

您的问题归结为在描述字符串中查找年龄。下面显示了一种使用 Scanner 的解决方案。此代码假定年龄将是文本“年龄:”之后的数字。

let desc = "ANTHONY JOHNSON, Age: 17 From: PEORIA, IL"
var ageRange: ageCategories? = nil

let scanner = Scanner(string: desc)
if scanner.scanUpTo("Age:", into: nil) && scanner.scanString("Age:", into: nil) {
var age = 0
if scanner.scanInt(&age) {
switch age {
case 0..<10:
ageRange = .AgeUnder10
case 10..<15:
ageRange = .Age10Plus
case 15...:
ageRange = .Age15Plus
default:
break
}
}
}

if let ageRange = ageRange {
print("Found age range of \(ageRange)")
} else {
print("No valid age found")
}

调整 case 语句中的范围以符合您的实际需要。您分配给枚举值的字符串不明确。 10 应该是 .AgeUnder10 还是 .Age10Plus

仅供引用 - 枚举值应以小写字母开头,枚举名称应以大写字母开头。所以你的枚举应该是:

enum AgeCategories: String {
case ageUnder10 = "Age under 10"
case age10Plus = "Age 10-14"
case age15Plus = "Age 15+"
}

关于ios - 从 XML 数据中的字符串创建类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47704464/

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