小编Ank*_*wal的帖子

iOS 10 - 请求相机,麦克风和照片库权限导致应用程序崩溃的更改

info.plist现在需要用户权限才能访问媒体库,照片,相机和其他硬件.解决方案是将他们的密钥添加到iOS 10用户的描述中,以便我们如何使用他们的数据,

我只能找到几把钥匙

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription
Run Code Online (Sandbox Code Playgroud)

我想知道是否还有更多的密钥用于其他硬件,info.plist 如果你没有提供info.plist正确的密钥描述,如果使用XCode-8 beta进行构建,你的应用程序将崩溃.

plist user-permissions ios ios10

97
推荐指数
3
解决办法
12万
查看次数

'NSInvalidArgumentException',原因:'data parameter is nil'

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)

iphone objective-c ios

9
推荐指数
2
解决办法
4万
查看次数

Swift闭合导致自我强烈的保留周期

我只是想知道我是否正确理解这一点.因此,根据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)

closures retain-cycle swift

8
推荐指数
1
解决办法
2560
查看次数

带范围的开关盒

我正在学习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给我一个错误消息。

switch-statement swift

8
推荐指数
4
解决办法
3720
查看次数

如何使用FCM为富文本通知创建Payload

我正在我的一个应用程序中实现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

6
推荐指数
1
解决办法
1384
查看次数

如何使用映射和过滤器从一维数组生成二维数组?

我今天使用循环获得了所需的输出,但是如何使用 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

3
推荐指数
1
解决办法
733
查看次数

如何在 WKWebView Swift4 中加载 excel/pdf 服务器 url

我想在 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)

ios swift wkwebview

2
推荐指数
1
解决办法
2509
查看次数

应用程序不要求照片库使用许可

我添加了隐私 - 照片库添加使用说明隐私 - 照片库使用说明

在此处输入图片说明

但是没有一个键要求用户访问照片库的权限。

我已经在模拟器和真实设备中进行了测试。

我什至尝试一次添加一个键。仅喜欢Privacy-Photo Library Additions Usage DescriptionPrivacy-Photo Library Usage Description。并且还尝试将两个键添加在一起。

但上述情况都不适合我。

我还添加了隐私 - 相机使用说明,而且效果很好。但是照片库的使用不要求用户许可

任何帮助表示赞赏!

permissions photolibrary ios swift swift4

2
推荐指数
1
解决办法
3610
查看次数