swift開發新項目總結

来源:http://www.cnblogs.com/Phelthas/archive/2016/12/29/6232036.html
-Advertisement-
Play Games

新項目用swift3.0開發,現在基本一個月,來總結一下遇到的問題及解決方案 1,在確定新項目用swift後,第一個考慮的問題是用純swift呢?還是用swift跟OC混編 考慮到新項目也不可避免的使用很多第三方庫,而第三方庫不一定支持swift或者有swift的替代版本,所以最終還是決定混編了; ...


新項目用swift3.0開發,現在基本一個月,來總結一下遇到的問題及解決方案   1,在確定新項目用swift後,第一個考慮的問題是用純swift呢?還是用swift跟OC混編      考慮到新項目也不可避免的使用很多第三方庫,而第三方庫不一定支持swift或者有swift的替代版本,所以最終還是決定混編了; (其實最終決定性因素就是YYModel不支持swift,而目前貌似沒有特別好用的swift的json解析庫,用慣了那麼好用的YYModel之後,再讓手寫model層真是受不了呀~~) 所以model層還是用OC; json轉model是在網路層做的,所以網路層也就只能跟著用OC,剛好繼續用比較數據AFNetworking~ View層,跟ViewController就沒啥特殊的了,再不用swift就成純OC了。。。   2,如果要引入swift庫的話,cocoapods要加use_frameworks!命令 加了以後,所有的pod庫都會以framework的方式來生成,最直觀的變化就是: 在OC的代碼中不能直接#import <AFNetworking.h>了,必須得#import <AFNetworking/AFNetworking.h>, 而swift的代碼中,可以直接 import AFNetworking這個模塊;   3,因為2的關係造成了另外一個比較坑爹的問題,那就是swift的庫不受Xcode定義的巨集命令的影響 比如某個庫裡面有定義 #if DEBUG  xxxx #endif 在oc裡面,只需要在工程裡面定義 DEBUG就行了; 但是在swift中,定義DEBUG需要在  Build Settings -> Swift Compiler - Custom Flags 的Other Swift Flag中 加入 -DDEBUG ; 而這個debug的定義,對pod裡面的庫是不生效的。。。 搜來搜去,最終google到用pod install hook的方式來重新設置pod的flag,就是在Podfile中加入下麵的代碼: post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == 'OJASwiftKit'
            target.build_configurations.each do |config|
                if config.name == 'Debug'
                    config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['$(inherited)','-DDEBUG']

                end
            end
        end
       
    end
end
  其中“OJASwiftKit”是你需要設置的swift庫的名字,可以根據需要修改 可以參考老外的博客:http://marginalfutility.net/2015/10/11/swift-compiler-flags/    4,跟3類似的還有騰訊QQSDK不支持bitcode,但是在swift項目中概不了其設置的問題 我是用了自己寫的LXMThirdLoginManager來導入第三方登錄的sdk,所以第三方sdk的文件都是在pod中,貌似也是因為工程設置對pod不生效,所以QQSDK的bitcode選項關閉不了; 直接把sdk拖到項目裡面應該可以解決,但是這樣就還得配置很多依賴庫什麼,不如用pod方便; 根據3的啟發,想到是不是也可以用pod install hook 的方式來解決呢? 答案是可以的,再在3的代碼中加入一段代碼就可以了:         if target.name == 'LXMThirdLoginManager'
            target.build_configurations.each do |config|
                config.build_settings['ENABLE_BITCODE'] = false
            end
        end
這一段和上面的if target.name == 'OJASwiftKit’平級   5,swift代碼不能自動補全的問題 這個網上有很多解決方案了,貼一個對我的機器管用的  
1 2 3 4 1) Close Xcode 2) Terminal -> rm -rf ~/Library/Developer/Xcode/DerivedData/* 3) Terminal -> rm -rf ~/Library/Caches/com.apple.dt.Xcode 4) Restart Xcode
  6,swift代碼規範 因為之前沒有用swift開發過新項目,所以代碼規範也沒有現成的,本意是儘量跟蘋果官方規範保持一致,所以暫定用LinkedIn的swift規範 https://github.com/linkedin/swift-style-guide#1-code-formatting
中文翻譯:http://www.cocoachina.com/swift/20160725/17176.html     界面的開發中用swift和用OC感覺差異不是特別大,等遇到了再慢慢補充~          
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以下內容為原創,歡迎轉載,轉載請註明 來自天天博客: 使用Dagger 2進行依賴註入 Producers 原文: 本文是在Android中使用Dagger 2框架進行依賴註入的系列文章中的一部分。今天我們將探索下Dagger Producers 使用Java實現非同步依賴註入的Dagger2的一個擴 ...
  • 12.29日,小程式服務範圍做了重大更新,增對富媒體和工具類型的小程式,增加了很多細分領域 富媒體:增加資訊,FM電臺,有聲讀物等,媒體平臺可上小程式了 工具:信息查詢,網路代理,健康,企業管理等 ,更多查詢服務可以上線,企業辦公也可上了 商業服務:新增法律服務,不需要資格證書 ,線上法律咨詢可以上 ...
  • 由[OpenDigg](http://www.opendigg.com/) 出品的iOS開源項目周報第三期來啦。我們的iOS開源周報集合了OpenDigg一周來新收錄的優質的iOS開發方面的開源項目,方便iOS開發人員便捷的找到自己需要的項目工具等。 ...
  • 摘要:我們來瞭解一下MVVM模式與Databinding ,MVVM是一種模式,Databinding 是一種框架。DataBinding是一個實現數據和UI綁定的框架。而ViewModel和View可以通過DataBinding來實現單向綁定和雙向綁定,這套UI和數據之間的動態監聽和動態更新的框架 ...
  • 提到FlexboxLayout大家估計有點模糊,它是谷歌最近開源的一個android排版庫,它的前身Flexbox是2009年W3C提出了一種新的佈局,可以簡便、完整、響應式的實現頁面佈局,Flexbox 是屬於web前端領域CSS的一種佈局方案。 首先:我們看一下它的屬性。 flexDirecti ...
  • 大致分為以下幾個方面: 一些查詢指令整理 使用SQL語句進行特殊查詢 檢測表欄位是否存在 資料庫升級 資料庫表欄位賦初始值 一、查詢指令整理 1.鏈式執行的指令 一般的查詢語句會在中間xxx的位置加上各種判斷和過濾的方法指令,除了最後的終結指令list()或unique()返回的是集合或業務對象,其 ...
  • 微信的張小龍也說了,小程式主要是通過二維碼進行傳播,那麼小程式的二維碼如何統計各個渠道的值呢? 微信小程式開發了帶參數二維碼,而帶參數二維碼就可以進行渠道統計 不然我有3個人,讓3個人使用不同的小程式二維碼進行地推 地推人員A 二維碼A 參數hotapp=a 地推人員B 二維碼B 參數hotapp= ...
  • 最近在學習安卓APP的開發,用到了toolbar這個控制項, 最開始使用時include layout這種方法,不過感覺封裝性不好,就又改成了自定義組合控制項的方式。 使用的工具為android studio 2.2,簡稱AS吧 1.首先創建一個新的自定義控制項,如下圖。AS會創建3個文件, 一個java ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...