我尝试使用此示例代码来解决您的问题。
首先在网络浏览器中运行这个“http://api.mtgdb.info/search/omni” URL 并复制响应然后粘贴到“http://jsonlint.com”,响应是有效的,我得到 8 个字典的数组,比如 id:37113、39932、83737、106426、228247, 288937、382286、386302——8个数据。
在 Objective C 中,它运行良好,我得到与网络浏览器相同的结果。
但是在 Swift 中,它的行为很奇怪,不能解析整个响应,只能得到一半的字典作为数组的对象。只得到这么多的回应,
Printing description of jsonResult:
(
{
artist = "Arnie Swekel";
cardSetId = JUD;
cardSetName = Judgment;
colors = (
green,
white
);
convertedManaCost = 7;
description = "Trample\nPhantom Nishoba enters the battlefield with seven +1/+1 counters on it.\nWhenever Phantom Nishoba deals damage, you gain that much life.\nIf damage would be dealt to Phantom Nishoba, prevent that damage. Remove a +1/+1 counter from Phantom Nishoba.";
flavor = "";
formats = (
{
legality = Legal;
name = "Odyssey Block";
},
{
legality = Legal;
name = Legacy;
},
{
legality = Legal;
name = Vintage;
},
{
legality = Legal;
name = Freeform;
},
{
legal
我试过这个代码示例
class ViewController: UIViewController, NSURLConnectionDelegate {
var data:NSMutableData!
var arrvehicls:NSMutableArray!
override func viewDidLoad() {
super.viewDidLoad()
self.data = NSMutableData()
self.arrvehicls = NSMutableArray()
self.startConnection()
}
func startConnection(){
let urlPath: String = "http://api.mtgdb.info/search/omni"
var url: NSURL = NSURL(string: urlPath)!
var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()
}
func connection(connection: NSURLConnection!, didReceiveData data: NSData!){
self.data.appendData(data)
}
func connectionDidFinishLoading(connection: NSURLConnection!) {
var err: NSError
var jsonResult:NSArray = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSArray
for var i = 0; i<jsonResult.count; ++i {
var dictResult = jsonResult.objectAtIndex(i) as! NSDictionary
var vehicleInfo = Vehicle()
vehicleInfo.id = dictResult.valueForKey("id") as! Int
vehicleInfo.artist = dictResult.valueForKey("artist") as! String
vehicleInfo.cardID = dictResult.valueForKey("cardSetId") as! String
vehicleInfo.cardName = dictResult.valueForKey("cardSetName") as! String
vehicleInfo.colors = dictResult.valueForKey("colors") as! NSArray
vehicleInfo.details = dictResult.valueForKey("description") as! String
vehicleInfo.flavour = dictResult.valueForKey("flavor") as! String
vehicleInfo.formats = NSMutableArray()
var arr = dictResult.valueForKey("formats") as! NSArray
for var j = 0; j<arr.count; ++i {
var dictFormats = arr.objectAtIndex(i) as! NSDictionary
var formats = Formats()
formats.legality = dictFormats.valueForKey("legality") as! String
formats.name = dictFormats.valueForKey("name") as! String
vehicleInfo.formats.addObject(formats)
}
self.arrvehicls.addObject(vehicleInfo)
}
}
}