如何在Swift中优雅地使用UIImage

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Swift中优雅地使用UIImage相关的知识,希望对你有一定的参考价值。

参考技术A SwiftyJSON的使用十分的简单:
典型的NSURLSessionTask抓取Twitter的API将产生dataFromNetwork: NSData!:
你首先应该做的事情是初始化JSONValue:

let json = JSONValue(dataFromNetwork)
JSONValue是一个枚举类型表示一个典型的JSON数据结构。
你能使用subscripts检索不同的值从原始的JSONValue中,像这样:

let userName:JSONValue = json[0]["user"]["name"]
注意userName仍然是一个JSONValue。那怎样得到一个字符串呢?
你能用.string属性得到JSON数据表示的真正值。

let userNameString = userName.string!
对每一种JSON类型, JSONValue都提供了一种属性检索它:

var string: String?
var number: NSNumber?
var bool: Bool?
var array: Array<JSONValue>?
var object: Dictionary<String, JSONValue>?
注意每一种属性都是一个Optional值。这是因为JSON数据能包含任何它定义的有效类型。
因此,建议的方式是用Optional绑定检索值:

if let name = userName.string
//This could avoid lots of crashes caused by the unexpected data types


if let name = userName.number
//As the value of the userName is Not a number. It won't execute.

.number属性产生一个NSNumber值,在Swift中这通常不是很有用。你能用.double或者.integer得到一个Double值或者一个Int值。
?
1
2
3
if let intValue = numberValue.integer
count += intValue


枚举(Enumeration)
在Swift中JSONValue实际上是一个枚举:

enum JSONValue

case JNumber(NSNumber)
case JString(String)
case JBool(Bool)
case JNull
case JArray(Array<JSONValue>)
case JObject(Dictionary<String,JSONValue>)
case JInvalid(NSError)


你可以使用一个switch子句去更有效地获取值:

let json = JSONValue(jsonObject)
switch json["user_id"]
case .JString(let stringValue):
let id = stringValue.toInt()
case .JNumber(let numberValue):
let id = numberValue.integerValue
default:
println("ooops!!! JSON Data is Unexpected or Broken")
下标(Subscripts)

注意,在JSON中一个数组结构被包装成intoArray<JSONVlaue>,它意味着数组里的每一个元素都是一个JSONValue。甚至你从JSONValue中取出一个数组,你仍然可以使用基本的属性去获取元素的值:

if let array = json["key_of_array"].array
if let string = array[0].string
//The array[0] is still a JSONValue!


对象也是一样。因此,推荐的方式是访问每一个数组和对象时使用JSONValue的下标。

if let string = json["key_of_array"][0].string


实际上,你可以用下标访问一个JSONValue,还不用担心运行时错误导致的崩溃:

let userName = json[99999]["wrong_key"]
如果你使用推荐的方式去取数据,它是安全的:

if let userName = json[99999]["wrong_key"]["name"].string
//It's always safe

以上是关于如何在Swift中优雅地使用UIImage的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 3 中使用 UIImage 数组为零?

如何使用 Swift 获取 UIImage 中像素的颜色?

将一张图像分成多个部分后,如何在 Swift 中使用 UIImage 数组?

我不知道如何将 UILabel 转换为 UIImage.[swift] [重复]

如何在 Swift 中制作可设计的 UIImage

在swift中使用UIColor(patternImage:UIImage(named:“myimage.jpg”))设置背景时如何获取视图的背景颜色或图像