Min*_*wak 10 xcode json foundation ios swift2
我有一个包含JSON文件的网页地址.我正在尝试在Swift 2中以NSDictionary的形式访问JSON文件.每当我调用 NSData(contentsOfURL:url!)where url的类型时NSURL?,它都会返回nil.我正在使用Xcode 7 Beta,该项目最初是在Xcode 6中制作的.
以下代码导致问题.
let url = NSURL(string:myurl) // myurl is the webpage address.
let data = NSData(contentsOfURL:url!) // the bit that returns nil
// data is set to nil
// I would perform NSJSONSerialization.JSONObjectWithData later.
Run Code Online (Sandbox Code Playgroud)
令我困惑的是,当我在终端使用中键入相同的代码时,当我尝试完全相同的事情时swift,常量data不会设置为nil.我尝试重新启动Mac,但它没有用.我尝试重新安装Xcode,但它没有用.
当我使用swift关键字向终端输入以下代码时会发生这种情况.
$> swift
......
Welcome to Apple Swift version 2.0 (700.0.38.1 700.0.53). Type :help for assistance.
1> import Foundation
2> var urlstr = "http://mywebsiteaddress/jsonfile.json"
3> var nsurl = NSURL(string:urlstr)
nsurl: NSURL? = "http://mywebsiteaddress/jsonfile.json"{
ObjectiveC.NSObject = {...}
}
4> var nsdata = NSData(contentsOfURL:nsurl!)
nsdata: NSData? = 5925 bytes {
ObjectiveC.NSObject = {...}
}
5> print(nsdata)
Optional(<Some Values..........>)
Run Code Online (Sandbox Code Playgroud)
当我在终端尝试它肯定有效.任何人都可以帮我解决问题吗?
Mic*_*lum 13
我希望它可以在终端中运行,因为你在这里看到的可能不是Swift或Cocoa Touch中的错误,但iOS 9中新功能的副作用称为App Transport Security.这意味着默认情况下,iOS不允许您使用SSL保护请求服务器.
从链接引用:
应用程序传输安全性(ATS)允许应用程序向其Info.plist文件添加声明,该文件指定需要与其进行安全通信的域.ATS可防止意外泄露,提供安全的默认行为,并且易于采用.无论您是创建新应用程序还是更新现有应用程序,都应尽快采用ATS.
如果您正在开发新应用,则应该专门使用HTTPS.如果您有现有应用,则应尽可能多地使用HTTPS,并创建一个计划,以便尽快迁移其余应用.
要解决此问题,您可以编辑info.plist文件以逐域进行例外,或完全禁用App Transport Security.以下是CFNetwork引用的示例SSLHandshake iOS 9 Beta 1失败.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow insecure HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
虽然我建议您实际上不使用此作为您的解决方案,而是使用SSL安全的https URL.
| 归档时间: |
|
| 查看次数: |
7084 次 |
| 最近记录: |