2015-10-16 17:09:51 woaifen3344 阅读数 3482

原文出自:Swift判断API的有效性

前言

我们在Swift开发中,为了适配不同的系统版本,我们必须要对API的兼容性做处理。因此这里总结一下在Swift开发中对API有效性的常用判断方式。

说明:本文中的Swift开发语言是基于Swift2.0语法的,若旧版本不支持,请参考相关文章。

回顾Objective-C的检查方式

1、方式一:通过获取iOS版本,然后判断是否是某个版本范围。如:

if ([UIDevice currentDevice].systemVersion.intValue >= 8) {
  // 调用8.0以后才支持的API
}

2、方式二:通过条件编译的方式判断是否是某个系统版本之上。如:

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
     // 调用7.0以后才支持的API
#endif

3、方式三:通过-respondsToSelector:方法来判断。如:

if (self respondsToSelector:@selector(testAPI)) {
  // 调用
  [self testAPI];
}

是否还有更多方式呢?一时想不出来了,如果还有别的方式,请联系我,谢谢!

学习Swift的检查方式

Swift2.0中,我们可以通过#available来判断是否可用。看看其语法如何:

语法规则:#available(iOS v, OSX v1, ),其中参数不要求全部使用,可以直接使用#available(iOS v, )或者#availabel(OSX, *)

1、方式一:我们仍然可以使用respondsToSelector方法来判断。如:

if tableView.respondsToSelector(Selector("reloadData")) {
   print("support reloadData")
}

注意:Selector类型与Objective-C中的不同,不会自动提示。

此处省略10000字…请移步原文阅读全文

关注我

公众号搜索「iOS开发技术分享」快速关注微信号:iOSDevShares

QQ群:324400294

image

2016-06-27 17:46:41 sunchunfeng1 阅读数 1554

Swift if条件判断

  • Swift中的ifOC中的if“几乎”一摸一样
    • Swift中的if可以省略后面的圆括号
    • OC中的if如果后面只有一条语句,那么大括号可以省略,而Swift中不行
    • OC中的条件表达式非0即真,而Swift中不行
    • Swift中提供了真正的Bool类型true/false,条件表达式的值必须true/false
let iOSNB = true

//条件是Bool类型
if iOSNB {
    print("NBA")
}

//条件是Bool类型的表达式
let pass = "及格"
let fial = "不及格"

let scroe = 59

//条件表达式
scroe >= 60

if scroe >= 60 {
    print(pass)
} else {
    print(fial)
}
  • 三木运算符
    • 格式: 条件表达式 ? 取值1 : 取值2
    • 注意:运算符之间需要有空格
    • 提醒:在Swift开发中三木运算符用得非常多
let result = scroe >= 60 ? pass : fial
2017-05-03 15:57:10 xutianyu930818 阅读数 1663
func isSimulator() -> Bool {
    var isSim = false
    #if arch(i386) || arch(x86_64)
        isSim = true
    #endif
    return isSim
}
如果是模拟器返回true
2017-09-15 18:26:48 bitcser 阅读数 711

在需要获取麦克风前进行判断如下

        var allow = false
        let audioSession = AVAudioSession.sharedInstance()
        //首先要判断是否允许访问麦克风
        audioSession.requestRecordPermission { (allowed) in
            if !allowed{
                let alertView = UIAlertView(title: "无法访问您的麦克风" , message: "请到设置 -> 隐私 -> 麦克风 ,打开访问权限", delegate: nil, cancelButtonTitle: "取消", otherButtonTitles: "好的")
                alertView.show()
                allow = false
            }else{
                allow = true
            }
        }
        if allow == false {
            return
        }


2016-08-24 14:11:53 wm9028 阅读数 916

判断语句

//判断语句
let count = 4
if(count == 4){
    print("YES")
}
else
{
    print("NO")
}
//小括号可以省略
if count == 4 {
    print("YES")
}
else
{
    print("NO")
}

/*
  if ...else..可以使用三目运算符
*/
let name:String = "xiaoming"
var namestr = name.characters.count<1 ? "" : name

switch语句

/*
switch 语句的小括号可以省略
*/
switch(count)
{
    case 1:
        print(1)
        break
    case 2:
        print(2)
        break
    case 3:
        print(3)
        break
    case 4:
        print(4)
        break
    default:
        break
}

for循环

/*
for 语句的小括号可以省略
*/
for var i = 0;i<10;i++
{
    print(i)
}
/*
小于10的一个循环
".."表示省略0——10不包括10
*/
for i in 0..<10
{
    print(1)
}
/*
    "_"表示忽略,不关心i是什么的时候
*/
for _ in 0..<10
{
    print("_表示忽略,不关心i的值的时候");
}


//for循环的自增减
for i in (1...10).reversed() {
print(i)
}
//自增或者自减 自定义步进数
//stride(from: <#T##Strideable#>, to: <#T##Strideable#>, by: <#T##Comparable & SignedNumeric#>)
//              开始              结束          步进
for i in stride(from: 0, to: 8, by: 1) {
    print(i);
}
for i in stride(from: 8, to: 0, by: -2) {
    print(i);
}


while的语句

/*
    while循环,开发过程中一般很少使用到
*/
let listCunt = 9

while listCunt < 9
{
    print(listCunt);
}
/*
   do。。while循环,没有do了。换了一个关键字repeat
*/
repeat
{
    print(listCunt);
    
}while listCunt < 9







?和!的用法

/*
“!”表示告诉编译器,可选类型中一定有值,强制解析
"?"表示可选的返回,不一定有值
*/
let url = NSURL(string: "www.baidu.com")
print(url);

if url != nil
{
  let urlRequest = NSURLRequest(URL: url!)
}

//可选的绑定 把url的赋值给urlFinal,如果不为空可以进去{}
if let urlFinal = url
{
    let urlRequest = NSURLRequest(URL: urlFinal)
}
没有更多推荐了,返回首页