版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.07.16 |
前言
我是swift2.0的時(shí)候開(kāi)始接觸的,記得那時(shí)候還不是很穩(wěn)定,公司的項(xiàng)目也都是用oc做的,并不對(duì)swift很重視,我自己學(xué)了一段時(shí)間,到現(xiàn)在swift3.0+已經(jīng)出來(lái)了,自己平時(shí)也不寫,忘記的也差不多了,正好項(xiàng)目這段時(shí)間已經(jīng)上線了,不是很忙,我就可以每天總結(jié)一點(diǎn)了,希望對(duì)自己對(duì)大家有所幫助。在總結(jié)的時(shí)候我會(huì)對(duì)比oc進(jìn)行說(shuō)明,有代碼的我會(huì)給出相關(guān)比對(duì)代碼。
純代碼方式啟動(dòng)程序
這里我只說(shuō)一下純代碼方式啟動(dòng)程序,至于storyboard方式啟動(dòng)程序,我就不多說(shuō)了,畢竟實(shí)際工程中一般都是純代碼,storyboard幾乎沒(méi)人用了。
oc純代碼啟動(dòng)
多了不說(shuō)我就上代碼了。
AppDelegate.m
#import "AppDelegate.h"
#import "JJGrammaStudyVC.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
JJGrammaStudyVC *vc = [[JJGrammaStudyVC alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
return YES;
}
@end
JJGrammaStudyVC.m
#import "JJGrammaStudyVC.h"
@interface JJGrammaStudyVC ()
@end
@implementation JJGrammaStudyVC
#pragma mark - Override Base Function
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor magentaColor];
}
@end
swift純代碼啟動(dòng)
好久沒(méi)寫了,剛寫的時(shí)候感覺(jué)異常別扭。
AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
//這樣就創(chuàng)建了一個(gè)UIWindow的對(duì)象
window = UIWindow(frame: UIScreen.main.bounds)
let vc = JJGrammaStudyVC()
let nav = UINavigationController(rootViewController:vc)
self.window?.rootViewController = nav
self.window?.makeKeyAndVisible()
return true
}
}
JJGrammaStudyVC.swift
import UIKit
class JJGrammaStudyVC: UIViewController
{
//MARK-Override Base Function
override func viewDidLoad()
{
super.viewDidLoad()
view.backgroundColor = UIColor.magenta;
}
}
從上面的兩種啟動(dòng)方式,我們可以看見(jiàn):
- oc中頭文件的引用是這樣的
#import "JJGrammaStudyVC.h"
,而swift中頭文件的引用是這樣的import UIKit
,而且注意的是我在swift中AppDelegate.swift
并沒(méi)有引入頭文件一樣可以生成對(duì)象使用,也就是說(shuō)swift中的頭文件是全局共享的。 - swift中的類的實(shí)例化一句話
let vc = JJGrammaStudyVC()
,這里let表示常量,每一句話后面的分號(hào)可有可無(wú),oc中實(shí)例化都是JJGrammaStudyVC *vc = [[JJGrammaStudyVC alloc] init];
, - 設(shè)置視圖顏色,swift中是
view.backgroundColor = UIColor.magenta
,而oc中的則是self.view.backgroundColor = [UIColor magentaColor];
,不知道大家感受咋樣,還可以吧?對(duì)于新手可能感覺(jué)別扭,其實(shí)寫習(xí)慣了也就一樣了。
這個(gè)不知道大家是否感興趣了,下面我們就從頭開(kāi)始,先從數(shù)據(jù)量和數(shù)據(jù)類型開(kāi)始吧。
數(shù)據(jù)的簡(jiǎn)單值
swift中值只有兩種類型,let為常量, var為變量,常量的值,在編譯的時(shí)候可以不立即指定,但是只能它賦值一次,變量可以賦值很多次。
let a = 10
var b = 30
b = 10
b = 20
上面的那種賦值方式就是可以的。常量和變量的類型必須和你賦給它們的值一樣,然而,聲明時(shí)類型是可選的,聲明的同時(shí)賦值的話,編譯器會(huì)自動(dòng)推斷類型,在上面的例子中,編譯器自動(dòng)推斷a、b都為整數(shù),因?yàn)樗鼈兊某跏贾稻蜑檎麛?shù)。
如果初始值沒(méi)有給初始值,你可以在變量后面聲明類型,用冒號(hào)分割。
let a : NSInteger = 10
注意:oc中的數(shù)據(jù)類型就很多了,NSinteger、Float等等。
不同數(shù)據(jù)類型之間的轉(zhuǎn)換
和oc一樣,swift同樣需要在不同的數(shù)據(jù)類型之間進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。
整數(shù)轉(zhuǎn)換為字符串
首先我們先看一下整數(shù)轉(zhuǎn)換為字符串
let label = "The width is "
let width = 100
let widthLabel = label + String(width)
print(widthLabel)
下面我們看輸出
The width is 100
另外,還有一種更簡(jiǎn)單的方法,可以將簡(jiǎn)單值轉(zhuǎn)換為字符串,把值寫在括號(hào)中,并且在括號(hào)之前加一個(gè)反斜杠,例如。
let apples = 3
let peaches = 5
let appTotal = "I have \(apples) apples.";
print(appTotal)
let fruitTotal = "I have \(apples + peaches) fruits."
print(fruitTotal)
下面我們看輸出
I have 3 apples.
I have 8 fruits.
注意:
- 大家可以看見(jiàn),輸出函數(shù)也不一樣,oc中是NSLog,swift中是print并且不用加@符號(hào)。
- oc整形轉(zhuǎn)字符串可以使用
[NSString stringWithFormat...]
這個(gè)方法。 - 這里是整形,對(duì)于浮點(diǎn)型等類型也可以這么轉(zhuǎn)換。
后記
這些都是基本數(shù)據(jù)類型的轉(zhuǎn)換,未完,待續(xù)~~