Monthly Archives: 9月 2016

[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.


[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

iOS9.xで開発したプロジェクトをiOS10対応にする際、上記のエラーが出ました。フォトライブラリにアクセスしたタイミングでコケました。デバイスやセンシティブな情報にアクセスする際にユーザに確認を求めなければならないという決まりがありましたが、iOS10ではこれらのアクセス方法が変更になっています。

詳しくは、Information Property List Key Reference

今回の場合はフォトライブラリですので、エラーメッセージの指示通り、

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	・・・
	<key>NSPhotoLibraryUsageDescription</key>
	<string>ここで選択した画像をアバターとして使用します</string>
	・・・
</dict>
</plist>

このように、Info.plistにキーと目的を設定すればOKです。ソースコード側の変更は不要です。


Nil is not compatible with expected argument type ‘UnsafePointer


Nil is not compatible with expected argument type ‘UnsafePointer

iOS9.x対応プロジェクトファイルをiOS10SDKでビルドした際にエラーになりました。

let path: CGMutablePath = CGMutablePath()
CGPathMoveToPoint(path, nil, 0, self.frame.size.height)
CGPathAddLineToPoint(path, nil, self.frame.size.width, self.frame.size.height)

CGMutablePath API リファレンス
CGMutablePath.xxxxxxxxメソッドを使え、とのことです。上記の例だと、

let path: CGMutablePath = CGMutablePath()
path.move(to: CGPoint(x: 0, y: self.frame.size.height))
path.addLine(to: CGPoint(x: self.frame.size.width, y: self.frame.size.height))

このように書き換えることで対応できました。