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

首頁(yè) > 編程 > Swift > 正文

用Swift構(gòu)建一個(gè)簡(jiǎn)單的iOS郵件應(yīng)用的方法

2020-03-09 17:50:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了用Swift構(gòu)建一個(gè)簡(jiǎn)單的iOS郵件應(yīng)用的方法,包括查看和標(biāo)記已讀等基本的郵件應(yīng)用功能,需要的朋友可以參考下
 

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

在Objective-C中,InboxKit使得創(chuàng)建郵件體驗(yàn)變得很輕松,那么,Swift又如何呢?Swift在WWDC后已正式被IOS社區(qū)所采納,我認(rèn)為以后的SDK設(shè)計(jì)肯定會(huì)包括既有Objective-C又有Swift寫的樣例。

我們的第一個(gè)Swift例子,我想寫一個(gè)簡(jiǎn)單的app,它就像一個(gè)魔幻8球:

  •     顯示Inbox中未讀thread
  •     當(dāng)你搖動(dòng)手機(jī),標(biāo)記thread為已讀并顯示新的thread

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

在 Swift 中使用 Objective-C SDK

InboxKit有6000行Objective-C代碼,我們還不打算把他們都轉(zhuǎn)換成Swift。為了編譯我們的Swift郵件應(yīng)用,我更新了open-source SDK,包含了“Xcode 6 自定義框架“。自定義框架是Xcode6的新特色-支持第三方框架的創(chuàng)建和分發(fā)。當(dāng)DEFINES_MODULE標(biāo)志設(shè)置為可用時(shí),自定義框架會(huì)自動(dòng)為Swift準(zhǔn)備Objective-C模塊的頭文件。在Swift編譯時(shí),它會(huì)讀取這個(gè)模塊頭文件,把Objective-C的類和方法映射到Swift。

Cocoa Touch框架包含這個(gè)SDK之后,在Swift中使用很簡(jiǎn)單。比如我創(chuàng)建了一個(gè)新的Swift應(yīng)用,只需要把這個(gè)SDK拖入工程中,然后在root view controller中添加import InboxKit。

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

查看郵件

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

我們的應(yīng)用將展示來(lái)自Inbox的未讀線程,每次一個(gè),所以我們這樣定義線程供應(yīng)者:

 

復(fù)制代碼代碼如下:
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

 


由于我們已經(jīng)創(chuàng)建了一個(gè)線程供應(yīng)者,我們就可以使用它的條目數(shù)組來(lái)存放我們的視圖. 供應(yīng)者不會(huì)同步獲取結(jié)果集, 所以我們需要實(shí)現(xiàn)INModelProviderDelegate協(xié)議并監(jiān)聽更新. 當(dāng)新的線程通過(guò)以下方式被創(chuàng)建的時(shí)候,供應(yīng)者會(huì)調(diào)用-providerDataChanged 方法,這些創(chuàng)建新線程的方式包括:1.從緩存從獲取 2.通過(guò)API加載 3.(某個(gè)時(shí)間)通過(guò)網(wǎng)絡(luò)數(shù)據(jù)包被推送到應(yīng)用. 實(shí)現(xiàn)協(xié)議確保了我們的應(yīng)用總是顯示最新的數(shù)據(jù).

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

復(fù)制代碼代碼如下:
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);}

 


標(biāo)記為已讀

在我們的 swift 示例程序中,我們要在用戶搖動(dòng)手機(jī)的時(shí)候,把當(dāng)前線程標(biāo)記為已讀,并且顯示一個(gè)新的線程。用InboxKit,標(biāo)記為已讀是非常簡(jiǎn)單的。
 

復(fù)制代碼代碼如下:
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()
        }
    }}

 

在后臺(tái),-markAsReadqueues這個(gè)方法使新的API動(dòng)作進(jìn)入隊(duì)列,通過(guò)這種行為來(lái)從線程中移除未讀標(biāo)簽。 INThread對(duì)象和本地存儲(chǔ)的數(shù)據(jù)會(huì)被立刻更新,但是這個(gè)動(dòng)作將會(huì)在手機(jī)上排隊(duì),直到可以建立
連接。如果服務(wù)器拒絕這次的動(dòng)作,那么本地的數(shù)據(jù)也會(huì)回滾。

我們不需要刷新我們的線程供應(yīng)者-我們的工作已經(jīng)完成!如果當(dāng)前線程被標(biāo)記為已讀,那么它就不再需要滿足我們線程供應(yīng)者結(jié)果集的標(biāo)準(zhǔn).供應(yīng)者會(huì)自動(dòng)
匹配它的內(nèi)容,并且調(diào)用providerDataChanged方法,我們實(shí)現(xiàn)的代理方法將會(huì)刷新我們顯示,來(lái)展現(xiàn)新集合中的第一個(gè)線程。

接下來(lái)的步驟

好了! 只用了幾十行代碼,我們就創(chuàng)建了一個(gè)示例程序,它可以從我們的收件箱一條條的獲取線程,并且讓我們標(biāo)記為已讀.現(xiàn)在它僅僅需要點(diǎn)動(dòng)畫和潤(rùn)色.你可以從這里查看demo的源碼:
: SwiftEightBall Sample App

我們僅僅接觸了InboxKit的一些淺顯的東西.在IOS SDK的上層創(chuàng)建我們的swift應(yīng)用,這意味著我們需要為模型獲取本地類的支持,比如線程和通訊錄,
以及因?yàn)橹С盅訒r(shí)線程和消息動(dòng)作的SQLite而變得更強(qiáng)大的離線緩存.
看看iOS SDK documentation 學(xué)習(xí)一下更多關(guān)于在郵件上層創(chuàng)建美觀大方應(yīng)用的知識(shí).



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到swift教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
秋霞蜜臀av久久电影网免费| 国产女主播自拍| 日本三级免费观看| 在线观看涩涩| 宅男噜噜99国产精品观看免费| 国产91绿帽单男绿奴| 国产精品影片在线观看| 欧美在线日韩精品| 怡红院红怡院欧美aⅴ怡春院| 男男受被啪到高潮自述| 国产一本一道久久香蕉| 爱情岛论坛亚洲首页入口章节| 成人一级视频| 精品女厕一区二区三区| 中文字幕亚洲欧美一区二区三区| 午夜精品久久久久久久99热浪潮| jizzjizz在线观看| 精品黑人一区二区三区| 四虎影院成人在线观看| 国产成人综合亚洲欧美在| 久久久久青草大香线综合精品| 成人午夜视频免费在线观看| 欧美精品视频www在线观看| 欧美精品久久久久久久久久| 国产精品大片免费观看| 国模套图日韩精品一区二区| 欧洲日韩一区二区三区| 激情五月俺来也| 日韩精品视频一区二区三区| 亚洲一区二区免费在线| 国产精品日韩精品中文字幕| 色天天综合色天天久久| 国产三级视频在线播放线观看| 亚洲日本网址| 不卡av播放| 中文字幕亚洲在| 国产欧美日韩视频在线观看| 中文字幕在线观看免费| 中文字幕激情小说| 欧美男男freegayvideosroom| 捆绑裸体绳奴bdsm亚洲| 欧美日精品一区视频| xxxxwwww在线免费观看| 97影院理论片在线播放| 91人人爽人人爽人人精88v| 欧美激情性做爰免费视频| 中文字幕久久一区| av电影天堂一区二区在线观看| 91久久精品无码一区二区| 无码人妻丰满熟妇精品区| 4438全国亚洲精品在线观看视频| 午夜先锋成人动漫在线| 极品美鲍一区| 成人福利影视| 三级在线免费看| 亚洲午夜精品久久久久久久久| 老太做爰xxxx| 国产精品久久久国产盗摄| 亚洲毛片在线免费观看| 91九色蝌蚪porny| 欧美一区二区三区播放| 日韩欧美精品中文字幕| 欧美中文在线视频| 天堂影院一区二区| 中文字幕日韩欧美在线视频| 国产麻豆一精品一男同| 黑人巨大猛交丰满少妇| 国产精品亚洲一区二区无码| www视频网站| 国产精品一二三在| 欧美三级电影网站| 国内精品久久久久国产盗摄免费观看完整版| 国产亚洲一区二区在线观看| 欧美日一区二区在线观看| 国内一区二区三区在线视频| 国产精品白丝jk白祙喷水网站| 日本午夜大片| 欧洲视频一区二区三区| 91青青草免费在线看| 偷偷操不一样的久久| 午夜精品成人av| 亚洲网友自拍偷拍| 亚洲爆乳无码一区二区三区| 国产精品亚洲一区二区无码| 少妇高潮露脸国语对白| 欧美专区日韩专区| 亚洲国产一区二区三区在线播放| 亚洲国产精品yw在线观看| v天堂中文在线| 激情另类小说区图片区视频区| 亚洲高清av一区二区三区| 久久国产免费看| 成人性生交大片免费网站| 久久精品99国产精| 99久久99久久免费精品蜜臀| 337p日本欧洲亚洲大胆张筱雨| 中文字幕在线观看视频免费| 欧美第一页草草影院浮力| 久久久久无码国产精品| 免费看男女www网站入口在线| 久草综合在线视频| 国产 欧美 在线| 久精品在线观看| 狠狠色噜噜狠狠狠狠97| 欧美主播福利视频| 黑人巨大精品一区二区在线| 亚洲三级网址| 麻豆av在线播放| 黄瓜视频在线免费观看| 日本电影一区二区| 丝袜亚洲另类丝袜在线| 日韩av不卡在线观看| 在线看片线路1| 日本在线观看视频| 欧美一级网址| 俄罗斯男人又粗又大| 影音先锋亚洲天堂| 欧美一三区三区四区免费在线看| 日韩成人中文字幕在线观看| 在线精品视频小说1| 久久成人亚洲精品| 成人激情免费电影网址| 国产精品乱人伦一区二区| 日本夜夜草视频网站| 色婷婷久久久亚洲一区二区三区| 亚洲免费av一区| 国产精品视频26uuu| 九色视频网站入口| 久久精品亚洲麻豆av一区二区| 扒开伸进免费视频| 国产精品视频中文字幕91| 欧美日韩不卡一区| 日韩中文字幕免费在线| 555www成人网| 女人喷潮完整视频| 亚洲国产精品va在线| 欧美日韩在线不卡视频| 欧美黑人xxxx猛牲大交| 国产一二三区在线视频| 综合一区二区三区| 男女激情片在线观看| 在线精品国产亚洲| 国产精品69av| 精品一区二区三区蜜桃在线| 欧美黄色一级网站| 亚洲 欧美 国产 另类| 台湾佬中文在线| 国内精品不卡在线| xxx成人少妇69| 国产乱子伦三级在线播放| 成人av在线网| 日韩精品中文字幕吗一区二区| 日本一区二区三区视频视频| 激情综合五月| 精品久久久久久久久国产字幕| 激情小说亚洲图片| 国产日韩成人内射视频| 性欧美lx╳lx╳| 日本爱爱小视频| 国产资源在线观看入口av| 黄色片网站在线观看| 国产精品高清一区二区| 日韩精品在在线一区二区中文| 国产精品二区二区三区| 久色视频在线观看| 亚洲欧美国内爽妇网| 亚洲人成网站77777在线观看| 亚洲国产一区二区在线观看| 国产精品资源在线| 精品久久一区二区三区蜜桃| 91电影91视频| 18欧美亚洲精品| 青娱乐自拍偷拍| 777永久免费网站国产| 理论片在线不卡免费观看| 天天影视色香欲综合网天天录日日录| 欧美激情成人| 国内精品久久久久久| 国产乱淫av一区二区三区| 97久久精品午夜一区二区| 国产一区二区三区四区三区四| 大片在线观看网站免费收看| 蜜臀av性久久久久蜜臀aⅴ| asian性开放少妇pics| 国产在线视频2019最新视频| 91av免费观看91av精品在线| 永久免费av在线| 中文字幕乱码一区二区免费| 少妇的滋味中文字幕bd| 亚洲第一区av| 亚洲欧美在线磁力| 欧美午夜a级限制福利片| 日韩美女写真福利在线观看| 国产日韩精品一区| 很黄很黄的网站免费的| 香蕉一区二区| 国产免费叼嘿网站免费| 999国产精品亚洲77777| av先锋资源网| 欧美videos粗暴| 91亚洲国产成人精品一区二三| 91免费电影网站| 好色先生视频污| 久久国产精品视频| 国产精品99精品无码视| 亚洲欧美成人一区| 午夜精品免费在线| 99国产超薄丝袜足j在线观看| 日韩欧美精品在线| 在线免费av观看| 免费h精品视频在线播放| 中文字幕亚洲精品在线| 欧美一区二三区| 激情小视频网站| 草草视频在线免费观看| 国产精品白嫩初高中害羞小美女| 亚洲欧美日韩精品久久奇米色影视| 99热亚洲精品| 国产亚洲永久域名| 国产精品7777| www.激情网| 日韩精品免费一区二区夜夜嗨| 亚洲av激情无码专区在线播放| 黄色网址中文字幕| 亚洲国产毛片完整版| 亚洲精品97久久中文字幕| 五月天婷婷在线播放| 久草在线资源网站| 中文在线字幕免费观看| 一级性生活毛片| 亚洲手机成人高清视频| 97se亚洲国产综合自在线| 精品一区2区三区| 国产精品视频一区二区三区| 无套内谢大学处破女www小说| 涩爱av色老久久精品偷偷鲁| 一区av在线播放| 一本到在线视频| 午夜精品久久久99热福利| 久久久噜噜噜久久| 国产精品va在线播放| 三级在线电影| 亚洲视频精品一区| 国产视频一区二区视频| www.五月激情| 色视频在线观看福利| 国产免费不卡av| av女优在线播放| 日韩一级av毛片| 波多野结衣视频网站| 久久久噜噜噜久久狠狠50岁| 91麻豆制片厂| 亚洲伊人成人网| 在线视频1卡二卡三卡| 美女被黑人40厘米进入| 在线观看 亚洲| 亚洲综合自拍一区| 青青草原网站在线观看| 无码国产精品一区二区高潮| 亚色视频在线播放| 亚洲一本大道在线| av中文资源在线资源免费观看| 日本老熟俱乐部h0930| 超碰最新在线| jizzjizzjizzjizz| 成年人黄色在线观看| 狠狠操第一页| 国产专区精品| 久久精品国产精品亚洲色婷婷| 玖玖视频精品| 精品久久九九| 日本50路肥熟bbw| 高清不卡一二三区| 男女交配网站| 国产欧美一区二区色老头| 加勒比在线一区二区三区观看| 99精品视频在线观看播放| 国产一区二区美女| 亚洲二区在线| 国产v在线观看| 欧美黄色片在线观看| 欧美成人精品午夜一区二区| 国产一二三四区在线| a在线观看免费视频| 久久精品欧美一区二区三区麻豆| 亚洲欧洲国产视频| 一区二区三区在线观看av| 三日本三级少妇三级99| av综合电影网站| 亚洲精品国产熟女久久久| 日韩免费高清视频网站| 免费a v网站| 成人av综合在线| 精品国产99国产精品| 三上悠亚影音先锋| 性欧美暴力猛交69hd| 成人av电影在线播放| 在线观看中文字幕的网站| 公侵犯人妻一区二区三区| 欧美精品国产白浆久久久久| 久久青青视频| 北条麻妃一区二区三区| 免费高清视频日韩| 加勒比色综合久久久久久久久| 91精品网站在线观看| 国产在线视频欧美一区二区三区| 成人片黄网站色大片免费毛片| 日韩av免费在线看| 日日欢夜夜爽一区| 国产精品国产三级国产专播品爱网| 欧美96一区二区免费视频| 刘亦菲一区二区三区免费看| 国产另类自拍| 一级黄色在线视频| 日韩欧美aⅴ综合网站发布| 看国产成人h片视频| 精品乱码一区二区三区四区| 黄色的网站在线观看| 久久亚区不卡日本| 影音先锋中文字幕在线视频| 最近免费中文字幕大全免费版视频| 亚洲无人区码一码二码三码| 国产精品久久久精品| 青青在线视频一区二区三区| 亚洲啊v在线观看| 五月婷婷之综合激情| 欧美日韩久久一区| 欧美在线中文|