【问题标题】:NSDictionary, (key:AnyObject, value:AnyObject) does not have a member name subscriptNSDictionary, (key:AnyObject, value:AnyObject) 没有成员名下标
【发布时间】:2015-04-21 19:05:18
【问题描述】:

我正在为 IOS 学习 swift,而当我在 youtube 上浏览外部数据库时(Swift:Using External Databases and API's by Skip Wilson ),我找到了以下部分:

service = PostService()
    service.getPosts {
        (response) in
        self.loadPosts(response["posts"]! as NSDictionary)
    }

func loadPosts(posts:NSDictionary) {
        for post in posts {
            var id = (post["Post"]["id"] as String)
            var title = post["Post"]!["title"]! as String
            var author = post["Post"]!["author"]! as String
            var content = post["Post"]!["content"]! as String
            var postObj = Post(id: id, title: title, author: author, content: content)
           postsCollection.append(postObj)
        }
        dispatch_async(dispatch_get_main_queue()) {
            self.tableView.reloadData()
        }
    }

最初这里的 NSDictionary 是 NSArray,但由于 NSArray 现在只接受 int 作为 key,并且 PostService.getPost() 返回类型为 NSDictionary,所以它不起作用。所以我把它改成了 NSDictionary。

但是,所有的var id,title,author,content都出现错误

(key:AnyObject, value:AnyObject) does not have a member name subscript

似乎我需要将键和值声明为 ,但我现在不确定是否要这样做。 Blow 是 Postservice 的代码:

class PostService {

    var settings:Settings!

    init(){
        self.settings = Settings()
    }

    func getPosts(callback:(NSDictionary)->()) {
        println("get posts")
        request(settings.viewPosts,callback)
    }

    func request(url:String,callback:(NSDictionary)->()) {
        var nsURL = NSURL(string: url)
        println(callback)
        let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!) {
            (data,response,error) in
            var error:NSError?
            var response = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary
                      callback(response)
        }
        task.resume()
    }
}

我知道这可能是一个非常简单和愚蠢的问题,但我在谷歌上搜索后仍然无法弄清楚。我该怎么办?任何帮助将不胜感激。

【问题讨论】:

    标签: ios swift nsdictionary swifty-json


    【解决方案1】:

    这里的罪魁祸首是基金会的NSDictionary,它根本没有下标成员。你可以尝试的是 Swift 的 Dictionary 。如果你一心想要使用NSDictionary,你可以使用它的objectForKey: API 来获得它的价值。

    【讨论】:

      【解决方案2】:

      在“for post in posts”这一行,post 变量是一个元组:(key:AnyObject, value:AnyObject)。我建议尝试:

      for (key, value) in posts {
          println(key)
          println(value)
      }
      

      ...检查传入的数据,看看它是否符合您的预期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        • 2017-07-18
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 2021-06-05
        相关资源
        最近更新 更多