swift NSNullを除去する
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift NSNullを除去する相关的知识,希望对你有一定的参考价值。
//
// UnwrappedNSNull.swift
// WeddingApps
//
// Created by Kosuke Matsuda on 2016/06/24.
// Copyright © 2016年 Appirits Inc. All rights reserved.
//
import Foundation
///
/// MARK: - UnwrappedNSNullable
///
protocol UnwrappedNSNullable {
func reduceNSNull() -> Self
}
///
/// MARK: - extensions
///
extension Optional: UnwrappedNSNullable {
func reduceNSNull() -> Optional<Wrapped> {
switch self {
case .Some(let value):
if let g = unwrappedNSNull(value) {
return .Some(g)
}
return self
default:
return self
}
}
}
extension Array: UnwrappedNSNullable {
func reduceNSNull() -> [Element] {
return reduce([Element]()) { (result, element) in
var result = result
if let value = unwrappedNSNull(element) {
result.append(value)
}
return result
}
}
}
extension Dictionary: UnwrappedNSNullable {
func reduceNSNull() -> [Key: Value] {
return reduce([Key: Value]()) { (result, element) in
var result = result
if let value = unwrappedNSNull(element.1) {
result[element.0] = value
}
return result
}
}
}
extension Set: UnwrappedNSNullable {
func reduceNSNull() -> Set<Element> {
return reduce(Set<Element>()) { (result, element) in
var result = result
if let value = unwrappedNSNull(element) {
result.insert(value)
}
return result
}
}
}
///
/// MARK: - functions
///
public func unwrappedNSNull<T>(value: T?) -> T? {
guard let v = value else {
return value.reduceNSNull()
}
if v is NSNull {
return nil
}
if let r = v as? UnwrappedNSNullable {
return r.reduceNSNull() as? T
}
if let r = v as? NSArray {
return (r as Array).reduceNSNull() as? T
}
if let r = v as? NSDictionary {
return (r as Dictionary).reduceNSNull() as? T
}
if let r = v as? NSSet {
return (r as Set).reduceNSNull() as? T
}
return v
}
以上是关于swift NSNullを除去する的主要内容,如果未能解决你的问题,请参考以下文章
swift 2つの可选型の値を场合分けして处理する书き方(场合分け时の处理は自分の环境での例です)
swift RxSwift:Observableを序列で同期处理に変更するref:https://qiita.com/hikarin522/items/187d48b25d9367170a51
swift 通知の登录を简単にする扩展名参考:http://qiita.com/mono0926/items/e3a76dc95046f0eeeb29
csharp シーン名を管理するEnumを作成するエディター拡张
csharp クラスのプロパティ,フィールド情报を取得する:リフレクションを使用する
scss 20180412 Chromeで画像を缩小表示すると文字がなんだかぼやける现象を回避するTips