热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

类型不符合协议序列类型-Swift-typedoesnotconformtoprotocolSequenceType-Swift

FrommyswiftappImfetchingdatafromawebservice.Datacomesasanarray:从我的快速应用程序,我正在从Web服务获取

From my swift app I'm fetching data from a webservice. Data comes as an array:

从我的快速应用程序,我正在从Web服务获取数据。数据以数组形式出现:

{"hashtags": ["first", "second"]}

I want to put every hashtag in a separate row of my UITableView. I have the logic to do that, but first - I'm getting werid error while parsing data.

我想把每个hashtag放在我的UITableView的一个单独的行中。我有逻辑做到这一点,但首先 - 我在解析数据时遇到了错误的错误。

I wrote a custom function:

我写了一个自定义函数:

class SingleHashtag: NSObject {

    var hashtagText: [String]

    init(hashtagText: [String]) {
        self.hashtagText = hashtagText
        super.init()
    }

    class func fromJSON(json: JSON) -> SingleHashtag? {
        let hashtagText:[String] = json["hashtags"].arrayValue.map { $0.stringValue}
        return SingleHashtag(hashtagText: hashtagText)
    }
}

and then in my main class I have:

然后在我的主要课程中我有:

Alamofire.request(.GET, "\(serverURL)/hashtags"/*, headers: headers*/)
        .validate()
        .responseJSON { response in
            print(response.description)
            switch response.result {
            case .Success:
                dispatch_async(dispatch_get_main_queue(),{
                    self.items.removeAllObjects()
                    if let jsOnData= response.result.value as? [[String: AnyObject]] {
                        for hashtag in jsonData {
                            if let userHashtags = SingleHashtag.fromJSON(JSON(hashtag)){
                                for hash in userHashtags {
                                    self.items.addObject(hash)
                                    self.hashtagTable.reloadData()
                                }
                            }
                        }
                    }
                    self.hashtagTable.reloadData()
                })
            case .Failure(let error):
                print(error)
            }
    }

but this line:

但这一行:

for hash in userHashtags {

throws an error during compilation:

编译时抛出错误:

type SingleHashtag does not conform to protocol 'SequenceType'

I tried adding as AnyObject but that didn't help. Can you tell me what might be wrong here?

我尝试添加为AnyObject,但这没有帮助。你能告诉我这里可能有什么问题吗?

1 个解决方案

#1


2  

Based on our conversation in the comments it looks like there are lots of things at play here.

根据我们在评论中的对话,看起来这里有很多东西在玩。

Defining items as an objective-c object like NSMutableArray is fighting against Swift and robbing it of its typing strength. If items is only ever a list of hashtag strings, then it should be typed as such. Try changing your items declaration to this:

将项目定义为像NSMutableArray这样的Objective-c对象,正在与Swift作斗争并抢夺它的打字强度。如果items只是一个hashtag字符串列表,那么它应该这样输入。尝试将您的商品声明更改为:

var items = [String]()

Based on what you've shared, it also doesn't look like a separate class for SingleHashtag is necessary. If it only has one String variable, it would be simpler to just pass the strings into items directly. An example of that is here:

根据您共享的内容,它看起来也不像SingleHashtag的单独类。如果它只有一个String变量,那么直接将字符串传递给项目会更简单。这方面的一个例子是:

Alamofire.request(.GET, "\(serverURL)/hashtags"/*, headers: headers*/)
    .validate()
    .responseJSON { response in
        print(response.description)
        switch response.result {
        case .Success:
            dispatch_async(dispatch_get_main_queue(),{
                self.items.removeAll()

                //cast the jsonData appropriately, then grab the hashtags
                if let jsOnData= response.result.value as? [String: [String]],
                    let hashtags = jsonData["hashtags"] {

                    //hashtags is now type [String], so you can loop
                    //through without the error and add the strings to 'items'
                    for hashtagText in hashtags {
                        self.items.append(hashtagText)
                        self.hashtagTable.reloadData
                    }
                }
            })
        case .Failure(let error):
            print(error)
        }
}

Note: this is written in Swift 3, so there will be some syntax differences if you are using an older version of Swift.

注意:这是用Swift 3编写的,因此如果您使用的是旧版本的Swift,会有一些语法差异。


推荐阅读
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 本文介绍了 JSON Schema 和 XML Schema 的基本概念,并详细讲解了如何使用 AJV 进行 JSON 数据校验。通过具体的示例和扩展方法,帮助读者更好地理解和应用这些工具。 ... [详细]
  • 使用HTML和JavaScript实现视频截图功能
    本文介绍了如何利用HTML和JavaScript实现从远程MP4、本地摄像头及本地上传的MP4文件中截取视频帧,并展示了具体的实现步骤和示例代码。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • Spring Boot + RabbitMQ 消息确认机制详解
    本文详细介绍如何在 Spring Boot 项目中使用 RabbitMQ 的消息确认机制,包括消息发送确认和消息接收确认,帮助开发者解决在实际操作中可能遇到的问题。 ... [详细]
  • 本文将通过一个简单的示例代码,介绍如何在 Java 中获取对象中值为 null 的字段名称。 ... [详细]
  • 在项目需要国际化处理时,即支持多种语言切换的功能,通常有两种方案:单个包和多个包。本文将重点讨论单个包的实现方法。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 深入解析Java中的空指针异常及其预防策略
    空指针异常(NullPointerException,简称NPE)是Java编程中最常见的异常之一。尽管其成因显而易见,但开发人员往往容易忽视或未能及时采取措施。本文将详细介绍如何有效避免空指针异常,帮助开发者提升代码质量。 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文详细介绍了如何在Unity中实现一个简单的广告牌着色器,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
春阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有