亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

用Swift構建一個簡單的iOS郵件應用的方法

2020-03-09 17:50:24
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了用Swift構建一個簡單的iOS郵件應用的方法,包括查看和標記已讀等基本的郵件應用功能,需要的朋友可以參考下
 

在前幾個月內,我一直在做InboxKit的研究,它是關于Inbox平臺的IOS SDK。Inbox為和郵件數據的交互提供高層API,使得你可以忽略IMAP,Exchange,MIME的解析以及thread探測(當然還有很多其他事情...),并使你致力于完成富有創意的APP的創作上。我們的目標很簡單:盡可能地打造一個優雅的,跨提供商的郵件應用。畢竟,它很難。

在Objective-C中,InboxKit使得創建郵件體驗變得很輕松,那么,Swift又如何呢?Swift在WWDC后已正式被IOS社區所采納,我認為以后的SDK設計肯定會包括既有Objective-C又有Swift寫的樣例。

我們的第一個Swift例子,我想寫一個簡單的app,它就像一個魔幻8球:

  •     顯示Inbox中未讀thread
  •     當你搖動手機,標記thread為已讀并顯示新的thread

(譯者注:文中的thread并不是線程的意思,在論壇中的一個帖子叫thread,回復叫post.這里可理解為一封郵件)

在 Swift 中使用 Objective-C SDK

InboxKit有6000行Objective-C代碼,我們還不打算把他們都轉換成Swift。為了編譯我們的Swift郵件應用,我更新了open-source SDK,包含了“Xcode 6 自定義框架“。自定義框架是Xcode6的新特色-支持第三方框架的創建和分發。當DEFINES_MODULE標志設置為可用時,自定義框架會自動為Swift準備Objective-C模塊的頭文件。在Swift編譯時,它會讀取這個模塊頭文件,把Objective-C的類和方法映射到Swift。

Cocoa Touch框架包含這個SDK之后,在Swift中使用很簡單。比如我創建了一個新的Swift應用,只需要把這個SDK拖入工程中,然后在root view controller中添加import InboxKit。

Xcode 6 自定義框架非常棒, 可是目前只有Xcode 6和iOS 8支持. 如果你正在開發一款應用程序, 你仍然可以選擇pod InboxKit。

查看郵件

InboxKit 讓我們從Inbox同步引擎獲取郵件數據變得簡單起來。我們實例化一個 INThreadProvider ,以此展示來自我們郵箱賬號的線程,并且具象化需要的數據。供應者模型 是InboxKit的一個核心概念: 他們被用于獲取線程,信息,聯系人和更多東西的集合 。供應者有點類似于Core Data中的 NSManagedObjectContext 和 YapDatabase的視圖——他們把復雜的東西封裝在內部,只是暴露出一個結果集,這個結果集是基于你提供的配置。 在InboxKit,供應者從本地SQLite store拉取緩存數據,同時,讓對于Inbox API 的詢問變得透明。

我們的應用將展示來自Inbox的未讀線程,每次一個,所以我們這樣定義線程供應者:

 

復制代碼代碼如下:
var provider:INThreadProvider! = namespace?.newThreadProvider();
provider.itemFilterPredicate = NSComparisonPredicate(format: "ANY tagIDs = %@", INTagIDInbox)
provider.itemSortDescriptors = [NSSortDescriptor(key: "lastMessageDate", ascending: false)]
provider.delegate = self
 
self.threadProvider = provider

 


由于我們已經創建了一個線程供應者,我們就可以使用它的條目數組來存放我們的視圖. 供應者不會同步獲取結果集, 所以我們需要實現INModelProviderDelegate協議并監聽更新. 當新的線程通過以下方式被創建的時候,供應者會調用-providerDataChanged 方法,這些創建新線程的方式包括:1.從緩存從獲取 2.通過API加載 3.(某個時間)通過網絡數據包被推送到應用. 實現協議確保了我們的應用總是顯示最新的數據.

還有其他一些代理方法,比如 providerDataAltered:它讓基于UICollection或者
UITableView創建郵箱用戶界面變得更簡單,同時可以使用各種插入刪除動畫效果.但是目前,我們繼續看一些基礎的東西.
 

復制代碼代碼如下:
func refreshInterface() {
    var items = self.threadProvider!.items
 
    if items.count == 0 {
        // display empty state
        self.subjectLabel.text = "No unread threads!"
        self.snippetLabel.text = ""
        self.participantsLabel.text = ""
        self.dateLabel.text = ""
    }
 
    if let thread = items[0] as? INThread {
        // display the thread
        self.subjectLabel.text = thread.subject
        self.snippetLabel.text = thread.snippet
        self.dateLabel.text = formatter.stringFromDate(thread.lastMessageDate);
 
        ....
    }}func providerDataChanged(provider: INModelProvider!) {
    self.refreshInterface()}func provider(provider: INModelProvider!, dataFetchFailed error: NSError!)  {
    self.displayError(error);}

 


標記為已讀

在我們的 swift 示例程序中,我們要在用戶搖動手機的時候,把當前線程標記為已讀,并且顯示一個新的線程。用InboxKit,標記為已讀是非常簡單的。
 

復制代碼代碼如下:
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent!) {
    if (motion == UIEventSubtype.MotionShake) {
        var items = self.threadProvider!.items
        if let thread = items[0] as? INThread {
            thread.markAsRead()
        }
    }}

 

在后臺,-markAsReadqueues這個方法使新的API動作進入隊列,通過這種行為來從線程中移除未讀標簽。 INThread對象和本地存儲的數據會被立刻更新,但是這個動作將會在手機上排隊,直到可以建立
連接。如果服務器拒絕這次的動作,那么本地的數據也會回滾。

我們不需要刷新我們的線程供應者-我們的工作已經完成!如果當前線程被標記為已讀,那么它就不再需要滿足我們線程供應者結果集的標準.供應者會自動
匹配它的內容,并且調用providerDataChanged方法,我們實現的代理方法將會刷新我們顯示,來展現新集合中的第一個線程。

接下來的步驟

好了! 只用了幾十行代碼,我們就創建了一個示例程序,它可以從我們的收件箱一條條的獲取線程,并且讓我們標記為已讀.現在它僅僅需要點動畫和潤色.你可以從這里查看demo的源碼:
: SwiftEightBall Sample App

我們僅僅接觸了InboxKit的一些淺顯的東西.在IOS SDK的上層創建我們的swift應用,這意味著我們需要為模型獲取本地類的支持,比如線程和通訊錄,
以及因為支持延時線程和消息動作的SQLite而變得更強大的離線緩存.
看看iOS SDK documentation 學習一下更多關于在郵件上層創建美觀大方應用的知識.



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品私拍pans大尺度在线| 欧美做受高潮电影o| 97在线视频免费看| 91久久精品一区| 亚洲人线精品午夜| 国产精品揄拍一区二区| 一区二区三区视频免费在线观看| 亚洲九九九在线观看| 久久国产精品久久精品| 欧美日韩国产页| 亚洲综合自拍一区| 欧美性受xxxx黑人猛交| 欧美日韩国产综合视频在线观看中文| 国产精品在线看| 国产精品欧美激情| 黑人与娇小精品av专区| 久久99国产综合精品女同| 欧美裸体xxxx| 国产欧美日韩亚洲精品| 亚洲精品白浆高清久久久久久| 国产精品一区二区三区免费视频| 欧美激情中文字幕乱码免费| 国产日韩精品在线播放| 国产精品欧美一区二区三区奶水| 中文欧美日本在线资源| 最新日韩中文字幕| 久久久久久久久久久亚洲| 国产精品欧美激情在线播放| 亚洲变态欧美另类捆绑| 亚洲va欧美va国产综合久久| 日韩中文字幕在线| 亚洲色图激情小说| 日韩精品极品视频免费观看| 成人免费淫片aa视频免费| 欧美综合第一页| 色综合亚洲精品激情狠狠| 久久久伊人欧美| 久久久精品网站| 久久这里只有精品99| 欧美激情亚洲一区| 亚洲精品乱码久久久久久金桔影视| 欧美电影在线观看高清| 日韩一区二区久久久| 亚洲经典中文字幕| 疯狂做受xxxx高潮欧美日本| 久久久久久999| 久久久亚洲福利精品午夜| 日本欧美在线视频| 日韩欧美在线观看| 亚洲人成免费电影| 国产成人jvid在线播放| 欧美一区二区三区四区在线| 久久久久久久久久久91| 成人免费看吃奶视频网站| 国产精品视频自在线| 久久九九热免费视频| 日韩免费观看高清| 国产精品第100页| 久久久国产一区二区三区| 国产成人精品久久久| 国产精品美腿一区在线看| 日韩人体视频一二区| 亚洲xxxxx性| 国产一区二中文字幕在线看| 欧美黄色片免费观看| 国产精品麻豆va在线播放| 欧美高清videos高潮hd| 亚洲欧美国产精品va在线观看| 亚洲精品国产精品自产a区红杏吧| 亚洲国产99精品国自产| 911国产网站尤物在线观看| 国产成人精品999| 国产精品福利网| 日韩成人黄色av| 91日本视频在线| 91免费精品国偷自产在线| 日韩激情片免费| 亚洲精品乱码久久久久久金桔影视| 美女久久久久久久久久久| 亚洲天堂av在线免费| 日日狠狠久久偷偷四色综合免费| 国产精品视频最多的网站| 国产精品久久久久久久久久久久| 欧美高清不卡在线| 亚洲伊人久久大香线蕉av| 4438全国亚洲精品在线观看视频| 中文字幕视频一区二区在线有码| 欧美午夜视频在线观看| 国外成人在线直播| 亚洲香蕉伊综合在人在线视看| 国产91精品网站| 日韩在线观看成人| 欧美在线视频免费播放| 国产成人久久久精品一区| 欧美猛交免费看| 在线观看成人黄色| 久久久999国产精品| 欧美尺度大的性做爰视频| 91成品人片a无限观看| 欧美成人中文字幕| 国产欧美精品一区二区三区-老狼| 97视频人免费观看| 中文字幕日韩在线播放| 国产中文日韩欧美| 国产精品偷伦视频免费观看国产| 亚洲国产精品人久久电影| 亚洲激情视频网| 亚洲精品短视频| 日韩欧美a级成人黄色| 欧美一区二区三区四区在线| 日韩精品免费综合视频在线播放| 日韩精品极品在线观看播放免费视频| 亚洲国产成人在线视频| 97视频网站入口| 国产日韩欧美视频| 精品福利樱桃av导航| 中文字幕日韩欧美精品在线观看| 热久久免费视频精品| 国产精品亚洲片夜色在线| 日韩欧美综合在线视频| 九九热视频这里只有精品| 亚洲精品国产精品自产a区红杏吧| 91久久在线播放| 日韩性生活视频| 国产欧美一区二区白浆黑人| 北条麻妃在线一区二区| 青青久久aⅴ北条麻妃| 亚洲男子天堂网| 国产精品午夜国产小视频| 国产精品成人aaaaa网站| 日韩www在线| 国产日韩在线一区| 欧美猛男性生活免费| 成人美女av在线直播| 欧美亚洲在线播放| 中文字幕亚洲一区在线观看| 久久人人爽亚洲精品天堂| 欧美精品电影免费在线观看| 国产成人精品久久亚洲高清不卡| 国产欧美久久一区二区| 亚洲性av在线| 国产精品免费久久久久影院| 日韩中文字幕免费视频| 精品国产一区二区三区久久狼黑人| 欧美大片在线影院| 精品电影在线观看| 日韩av观看网址| 欧美性69xxxx肥| 91欧美激情另类亚洲| 日韩在线精品视频| 日本国产欧美一区二区三区| 亚洲精品电影在线观看| 久久99久久亚洲国产| 国产精品久久久久久久久久尿| 91免费在线视频网站| 欧美成人免费观看| 人体精品一二三区| 亚洲网在线观看| 亚洲国产美女精品久久久久∴| 欧美日本啪啪无遮挡网站| 国产精品r级在线| 国产999视频| 久久精品国产99国产精品澳门| 性欧美长视频免费观看不卡|