iOS初學之填坑總結

學術袁發表於2019-04-01

Bug(2019-4-1)


Linker command failed with exit code 1(use-v to see invocation)

Linker command failed with exit code 1(use-v to see invocation)
為什麼會出現這樣的問題呢?
Build Phases
是因為在 Build Phases 下的 Compile Sources 中沒有把你專案中的.swift 檔案新增進入,怎麼會找的到(Link),怎麼能夠進行編譯呢?!所以,修改這個bug,只需要把你的專案中檔案新增進入就ok。

Bug(2019-4-2)


在使用xcode9.0整合HandyJSON的時候,安裝成功,編譯卻一直不會通過。使盡各種方法,最終還是給我嘗試到了。這裡分享一下我的經驗:


在我配置了cocoaPods之後,在Podfile檔案中做如下配置:

# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'

target 'Demo' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Demo
  pod 'Alamofire'
  pod 'SwiftyJSON'
  pod 'HandyJSON','4.1'
  #pod 'HandyJSON', git: 'https://github.com/alibaba/HandyJSON.git' , branch: 'dev_for_swift5.0'

end

可以看到我在其中一共整合了三個函式庫:Alamofire , SwiftyJSON, HandyJSON.
第一次使用的HandyJSON的版本是 'HandyJSON', '4.2.0' 然後是 'HandyJSON', '4.2.0-beta1' 安裝之後的編譯結果都會報錯。
錯誤內容是:Undefined symbols "_swift_getFieldAt"
這個在github上找到的原因是,函式庫自身在適配swift時的bug。
在這裡插入圖片描述

遇到問題了,當然要想法設法的去解決。然後進行百度搜尋,嘗試很多部落格中指出的方法,沒有成功。這時候一個上午已經過去了,下午也到15點了。沒辦法進github翻翻 issue 吧。也找了好多同樣問題的帖子。
解決方法一
解決方法二
都不管用,嘗試了高版本的HandyJSON幾個。由原來的舊問題,變成了新的問題。如下圖展示:
在這裡插入圖片描述

錯誤內容是:"_swift_getTypeByMangledNameInContext", referenced from:
有說使用高版本xcode進行適配。但是我的電腦又不支援太高的xcode版本。而且我突然想到這個HandyJSON之前的舊版本也一直在使用啊,而且在issue上提出了好多相關的問題。由此,我想到了試一試低版本的HandyJSON。然後就用了上面的pod 'HandyJSON','4.1'
果然就成功了。 所以,當有朋友遇到這種編譯問題(只針對初學者)可以嘗試一下各種版本進行試用!

Bug(2019-4-9)


Terminating app due to uncaught exception NSUnKnownKeyException

一個XIB小問題讓我處理了2天,哈哈!問題就在於這裡:
在這裡插入圖片描述

第一次使用XIB畫圖的時候是ok的,只是後來修改了一下“大V的變數名”然後在對應的XIB中沒能同步修改,所以就報上面的錯誤。當然,從這個過程中學到的則是,如果去看列印的錯誤日誌。因為上面標註的很清楚:Terminating app due to uncaught exception NSUnKnownKeyException: this class is not key value coding-compliant for the key vipImageView .

Bug(2019-4-10)


Value of type [UIView] has no member compactMap

引入第三方函式庫報錯,Value of type [UIView] has no member compactMap
是因為我直接引入了 pod 'IBAnimatable', '5.1.0'
根據官方,作出正確的解決方法

# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'

target 'Demo' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Demo
  pod 'Alamofire'
  pod 'SwiftyJSON'
  pod 'HandyJSON','4.1'
  #pod 'HandyJSON', git: 'https://github.com/alibaba/HandyJSON.git' , branch: 'dev_for_swift5.0'

  pod 'Kingfisher', '4.1.1'
  # Pods for JNUHonorSchoolStudentPlatform
  pod 'IBAnimatable', '5.0.0'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'IBAnimatable'
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.0'
      end
    end
  end
end

Bug(2019-4-17)


  • 偶遇壹

在使用xcode(9.0)進行XIB畫圖,編譯出錯
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 'this class is not key value coding-compliant for the key avatarView.'
在這裡插入圖片描述
出現這個問題說明,拖到XIB的view在進行連線時候,1)連線不對;2)一個view被重複或者多次連線。都會出現上面的錯誤。
如果是出現的問題(2)會有很多個連線,在這裡進行刪除多餘的就好了。
在這裡插入圖片描述

  • 偶遇貳

在使用代理的時候,自覺編碼沒問題,編譯出錯。且,猝不及防!
出錯展示:Ambiguous reference to member 'tableView(_:heightForHeaderInSection:
Ambiguous reference to member 'tableView
描述:為實現點選UiTableViewController中自定義的UITableViewCell下的UICollectionViewCell進行跳轉的監聽。在UITableViewCell定義了一個協議protocol。
在這裡插入圖片描述
此處錯誤的原因是,在UITableViewCell(MyFirstSectionCell)定義了一個協議protocol(MyFirstSectionCellDelagate),協議的方法 MyFirstSectionCell 函式名稱和 自定義view的MyFirstSectionCell 的函式名稱一樣導致。
解決方法:修改協議函式名稱,避免和自定義view的類名稱一樣。

Bug(2019-4-28)

我的mac本,配置了vscode執行react-native環境,和配置了xcode編譯react-native的環境。平時使用終端命令在vscode,多編譯執行android平臺程式碼,對於ios都是在xcode中執行。但是為了更方便嘗試了都在vscode上進行編譯,但是第一次使用終端命令react-native run-ios竟然出錯了!
錯誤內容:xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
解決方法,在你已經安裝了XCode的前提下,在終端輸入命令sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/

Bug(2019-4-28)

No component found for view with name ARTShape
No component found for view with name ARTShape
這個錯誤來的有點觸不及防,經過查詢解決辦法。得到解決!
當前react-native使用的版本是 0.59.6 。但是使用腳手架生成的專案,在ios平臺並把ARTShape這個新增到專案的依賴中,導致app在執行到使用到ARTShape的地方就出現了崩潰。
解決方案: 新增 node_modules/react-native/Libraries/ART/ART.xcodeproj 到LIbraries。
在這裡插入圖片描述
然後在從Libraries中的ART.xcodeproj/product目錄下,拖拽libArt.aLink Binary With Libraries中。
在這裡插入圖片描述
重新編譯執行即可!

Bug(2019-5-6)

react-native iOS平臺 配置頂象無感驗證之後,Achive 打包失敗。Failed to verify bitcode in DingxiangCaptchaSDK.framework/DingxiangCaptchaSDK: error: Cannot extract bundle
DingxiangCaptchaSDK.framework/DingxiangCaptchaSDK: error: Cannot extract bundle
解決方案:將專案的 build Settings -> Build Options -> Enable Bitcode 設定為 no 解決了問題 , 打包成功!

相關文章