0
我正在学习使用外部数据库,我使用mysql + php。数据结构非常简单。我只有1个表格“发布”,具有4个属性:标识,标题,作者和内容。然后我试图从在线视频使用NSArray和NSDictionary:无法将类型“字符串”的值转换为预期的参数类型“int”
学习,如果我复制了确切的代码,它可以成功地建立,后来就传来了错误信息
“无法投类型的值‘__NSArrayM’(0x882178)到 'NSDictionary'(0x882394)。“
在
let response = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary".
编码所以我在编码改变了NSDictionary
到NSArray
,那么它出来另一个错误的另一种编码,甚至无法成功建立。
在
self.loadPosts(response["posts"] as! NSArray)
现在我也不做什么和编码“无法转换类型“字符串的值”,以期望的参数‘INT’
请帮帮我。
这些都是编码后service.swift
import Foundation
class PostService {
var settings:Settings
init() {
self.settings = Settings()
}
func getPosts(callback:(NSArray) ->()){
request(settings.viewPosts, callback: callback)
}
func request(url:String, callback:(NSArray) ->()){
let nsURL = NSURL(string: url)
let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!)
{(data,response,error) in
let _: NSError
let response = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
callback (response)
}
task.resume()
}
}
下面的代码是在masterviewcontroller.swift
:
var detailViewController: DetailViewController? = nil
var postsCollection = [Post]()
var service:PostService!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.navigationItem.leftBarButtonItem = self.editButtonItem()
let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "insertNewObject:")
self.navigationItem.rightBarButtonItem = addButton
if let split = self.splitViewController {
let controllers = split.viewControllers
self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
}
service = PostService()
service.getPosts{
(response) in
self.loadPosts(response["posts"] as! NSArray)
}
}
// func loadPosts
func loadPosts (posts:NSArray){
for post in posts {
let id = post["Post"]!!["id"] as! String
let title = post["Post"]!!["title"] as! String
let author = post["Post"]!!["author"] as! String
let content = post["Post"]!!["content"] as! String
let postObj = Post(id: id, title: title, author: author, content: content)
postsCollection.append(postObj)
dispatch_async(dispatch_get_main_queue()){
self.tableView.reloadData()
}
}
}