info.plist现在需要用户权限才能访问媒体库,照片,相机和其他硬件.解决方案是将他们的密钥添加到iOS 10用户的描述中,以便我们如何使用他们的数据,
我只能找到几把钥匙
NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription
Run Code Online (Sandbox Code Playgroud)
我想知道是否还有更多的密钥用于其他硬件,info.plist 如果你没有提供info.plist正确的密钥描述,如果使用XCode-8 beta进行构建,你的应用程序将崩溃.
XCode新手在这里,我一直试图弄清楚为什么会发生以下情况......
使用当前编写代码的方式,我不断获得'NSInvalidArgumentException'.
原因:xcode中的'data parameter is nil'.网址在浏览器上运行正常.
当我删除网址的"filters =%7B%22region%22%3A%22CA%22%7D"部分时,它在Xcode中工作正常,但是当包含该网址的这一部分时,就是我收到错误消息的时候.我已经尝试使用"替代%22但仍然没有.任何建议都非常感谢.
NSURL *url = [NSURL URLWithString:[@"http://api.v3.factual.com/t/restaurants-us?q=peets+coffee&filters=%7B%22region%22%3A%22CA%22%7D&KEY=p7kwKMFUSyVi64FxnqWmeSDEI41kzE3vNWmwY9Zi"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *data = [NSData dataWithContentsOfURL: url];
Run Code Online (Sandbox Code Playgroud) 我只是想知道我是否正确理解这一点.因此,根据apple docs,当你创建一个闭包作为类实例的属性并且该闭包引用self(创建闭包属性的类)时,这将导致一个强大的保留周期,最终类和闭包将被释放.所以在非专业术语中,这意味着如果我有一个具有属性且该属性是闭包的类,并且一旦我在类中分配了该闭包的功能,该类声明了将导致强保留周期的闭包属性.下面简要说明我的意思
class SomeViewController{
let myClosure:()->Void
public func someFunction(){
....bunch of code
myClosure = {
self.dismiss(blahBlahBlah)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这最终会导致保留循环,因为闭包保持对self的强引用,self是创建闭包属性的类.现在根据苹果来解决这个问题,我会定义一个类似的捕获列表
class SomeViewController{
let myClosure:()->Void
public func someFunction(){
....bunch of code
myClosure = { [weak self] in
self?.dismiss(blahBlahBlah)
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意我如何在in语句之前放置[weak self].这使得闭包只知道对自身的弱引用而不是强引用.当封闭和自我生存相同的持续时间时,IM应该使用弱的时候自我可以关闭或无主.
我从这里获得此信息自动引用计数和该链接的强引用循环部分,这句话"如果你为一个类实例的属性分配一个闭包,那么一个强引用循环也会出现那个闭包抓住了实例"我大约90%确定我正确地理解了这一点,但只有10%的怀疑.所以我有这个正确吗?
我之所以这样问是因为我在视图中使用了一些回调函数.那些回调调用自己,但那个场景中的self是响应回调而不是实际视图本身的视图控制器.这就是我自己怀疑的地方,因为我从那句话突出显示我不认为我需要把[weak self]所有那些按钮回调,但我只是确定.这是一个例子
class SomeViewController {
let someSubview:UIView
override viewDidLoad() {
//Some Subview has a button and in that view I just have some action that gets fired off calling the callback …Run Code Online (Sandbox Code Playgroud) 我正在学习Swift,并在观看视频之前尝试自己编写Ryan Wenderlich的“ Bullseye”游戏。
我需要根据用户与目标数量的接近程度来给用户评分。我试图计算差异,然后检查范围并为用户提供分数,这是我对If-else所做的(对于切换用例无法做到):
private func calculateUserScore() -> Int {
let diff = abs(randomNumber - Int(bullsEyeSlider.value))
if diff == 0 {
return PointsAward.bullseye.rawValue
} else if diff < 10 {
return PointsAward.almostBullseye.rawValue
} else if diff < 30 {
return PointsAward.close.rawValue
}
return 0 // User is not getting points.
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更优雅地使用Switch-Case?我不能仅仅diff == 0在切换情况下做例如xCode给我一个错误消息。
我正在我的一个应用程序中实现Rich Text Notification.我知道我需要以下列格式的有效载荷:
{
"aps": {
"alert": {
"title": "",
"body": “”
},
"badge": 1,
"sound": "default",
"mutable-content": true,
"content-available": true,
"category": "defaultCategory"
},
"image_url": ""
}
Run Code Online (Sandbox Code Playgroud)
虽然当我尝试使用默认的APNS进程时,我成功完成了它,但是我在使用FCM实现它时遇到了一个问题,问题是我没有收到密钥:
mutable-content: 1
category: defaultCategory
Run Code Online (Sandbox Code Playgroud)
我探讨了它,并为iOS找到了一个url FCM丰富的推送通知负载 ,我也尝试了所提到的密钥.
"mutable_content": true,
"click_action": defaultCategory,
Run Code Online (Sandbox Code Playgroud)
但即使使用这些我也没有得到正确的结果.我在最终更改后收到的当前有效负载是:
{
gcm.notification.category: defaultCategory,
image: /r/u/rustyredsmall.jpg,
type_id: XMH677878912-L-Blue,
type: Product,
aps: {
alert = {
body = "new product notification message2018-05-24 00:00:00";
title = "Product Notification";
};
badge = 1;
sound = default;
},
0: {"mutable_content":true},
gcm.message_id: 0:1527142412430945%98b85c5198b85c51
} …Run Code Online (Sandbox Code Playgroud) push-notification ios firebase swift firebase-cloud-messaging
我今天使用循环获得了所需的输出,但是如何使用 map 和 filter 将该循环与单行表达式交换?
我从一系列国家开始。从这个我使用 map 生成带有首字母的第二个数组。我现在想构建一个二维数组,其中包含使用 map 和 filter 在不同数组中具有相同首字母的所有国家,以便我可以摆脱我今天使用的循环。
let countries = ["Albania", "Algeria", "Angola", "Bahamas", "Bahrain", "Canada"]
var initials = Set(countries.map { $0.prefix(1) }).sorted()
func countriesByInitial() -> [[String]] {
var result = [[String]]()
for initial in initials {
result.append(countries.filter { $0.prefix(1) == initial })
}
return result
}
Run Code Online (Sandbox Code Playgroud) arrays multidimensional-array higher-order-functions ios swift
我想在 WKWebView 中加载 Excel 表 url/pdf url(文档 url)。当我尝试从浏览器打开该 url 时,它会直接下载该文档。所以我很困惑 1] 我必须直接将 url 加载到 WKWebView 中还是 2] 首先下载这些文件,然后在 WKWebView 中加载该本地路径。
如果我选择第二个选项,那么我的文档每次都会下载吗?以下是我尝试过的代码,但它什么也没显示
import UIKit
import WebKit
class OpenReportsFullScreenVC: UIViewController,WKUIDelegate {
var webView : WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
//first way :- webView.load(URLRequest(url: URL(string: "http://ipaddress/projects/ourivf/newourivf/assets/uploads/patient_image/attorney_details - Copy.xls")!))
// second way
let filePathURLData = "http://ipaddress/projects/ourivf/newourivf/assets/uploads/patient_image/attorney_details - Copy.xls"
let fileURL = URL(fileURLWithPath: filePathURLData )
webView.loadFileURL(fileURL, allowingReadAccessTo: fileURL)
}
override func loadView() {
//initialise webview
let webViewConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: …Run Code Online (Sandbox Code Playgroud) 我添加了隐私 - 照片库添加使用说明和隐私 - 照片库使用说明。
但是没有一个键要求用户访问照片库的权限。
我已经在模拟器和真实设备中进行了测试。
我什至尝试一次添加一个键。仅喜欢Privacy-Photo Library Additions Usage Description或Privacy-Photo Library Usage Description。并且还尝试将两个键添加在一起。
但上述情况都不适合我。
我还添加了隐私 - 相机使用说明,而且效果很好。但是照片库的使用不要求用户许可
任何帮助表示赞赏!
ios ×6
swift ×6
arrays ×1
closures ×1
firebase ×1
ios10 ×1
iphone ×1
objective-c ×1
permissions ×1
photolibrary ×1
plist ×1
retain-cycle ×1
swift4 ×1
wkwebview ×1