小编Leo*_*bus的帖子

Swift 3 - 通过Int属性减少对象集合

我有一个包含3个对象的数组,如下所示:

class AClass {
    var distance: Int?
}

let obj0 = AClass()
obj0.distance = 0

let obj1 = AClass()
obj1.distance = 1

let obj2 = AClass()
obj2.distance = 2

let arr = [obj0, obj1, obj2]
Run Code Online (Sandbox Code Playgroud)

当我减少数组并将其分配给变量时,我只能对数组中的最后一个元素求和.

let total = arr.reduce(0, {$1.distance! + $1.distance!})  //returns 4
Run Code Online (Sandbox Code Playgroud)

如果我尝试$ 0.distance!它的错误是"没有更多的上下文,表达式是模棱两可的".

我试着更明确:

var total = arr.reduce(0, {(first: AClass, second: AClass) -> Int in
    return first.distance! + second.distance!
})
Run Code Online (Sandbox Code Playgroud)

但是"'Int'的错误与上下文类型'_'不兼容"如何将其减少到距离的总和?

reduce swift

4
推荐指数
1
解决办法
2727
查看次数

增量标签栏徽章带UIAlertAction swift?

@IBAction func addToCart(sender: AnyObject) {
    let itemObjectTitle = itemObject.valueForKey("itemDescription") as! String
    let alertController = UIAlertController(title: "Add \(itemObjectTitle) to cart?", message: "", preferredStyle: .Alert)
    let yesAction = UIAlertAction(title: "Yes", style: UIAlertActionStyle.Default) { (action) in
    var tabArray = self.tabBarController?.tabBar.items as NSArray!
    var tabItem = tabArray.objectAtIndex(1) as! UITabBarItem
    let badgeValue = "1"
    if let x = badgeValue.toInt() {
        tabItem.badgeValue = "\(x)"
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我不能做+ ="(x)"

错误:二元运算符'+ ='不能应用于'String?'类型的操作数 和'字符串'

我希望每次用户选择"是"时它增加1.现在显然它只停留在1.

uitabbaritem ios swift swift2 swift3

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

RegEx for Alphanumeric没有特殊字符SWIFT iOs

我的密码强度标准如下:

8个字符长度无特殊字符Atleast 1个数字Atleast 1个字母

regex ios swift

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

在 Swift 中将整数转换为罗马数字字符串

我正在寻找IntegerSwift 并将其转换为罗马数字String。有任何想法吗?

nsnumber swift swift-extensions

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

如何使用Swift 3中的URL resourceValues方法获取文件创建日期?

感谢此论坛中的各种有用帖子,我有一些代码可用于获取单个用户选择的NSURL的创建日期.但是,我无法使代码适用于硬编码的NSURL,也不能通过NSFileManager枚举器进行循环.

我不是专业的程序员; 我制作的应用程序是办公室的工具.我的最终目标是简单地根据创建日期对NSURL对象数组进行排序.

我正在使用的代码如下,其功能正常,但如果我尝试使用注释行来评估特定的PDF文件,我会收到以下错误:

在此输入图像描述

当我尝试将此代码添加到通过NSFileManager枚举器获取的NSURL对象循环时,我得到完全相同的错误.

我无法弄清楚如何使用错误指令来解决问题.如果有人可以提供帮助,那将是巨大的.谢谢.

let chosenURL = NSOpenPanel().selectFile

    //let chosenURL = NSURL.fileURL(withPath: "/Users/craigsmith/Desktop/PDFRotator Introduction.pdf")

    do
    {
        var cr:AnyObject?
        try chosenURL?.getResourceValue(&cr, forKey: URLResourceKey.creationDateKey)

        if (cr != nil)
        {
            if let createDate = cr as? NSDate
            {
                print("Seems to be a date: \(createDate)")

                let theComparison = createDate.compare(NSDate() as Date)

                print("Result of Comparison: \(theComparison)")  // Useless

                let interval = createDate.timeIntervalSinceNow

                print("Interval: \(interval)")

                if interval < (60*60*24*7*(-1))
                {
                    print("More than a week ago")

                }
                else
                {
                    print("Less than a week ago")
                } …
Run Code Online (Sandbox Code Playgroud)

nsurl nsfilemanager swift swift3

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

如何在Swift 3中将两个字符串(日期和时间)组合成一个新日期

我正在尝试将两个日期字符串组合成一种格式,以允许新的单个日期.第一个字符串是.long样式格式字符串.第二个字符串只是一个时间字符串.值看起来像这样:

let date = "March 24, 2017"
let time = "7:00 AM"
Run Code Online (Sandbox Code Playgroud)

我需要组合这些字符串以形成一个新的日期,作为iOS快速日期.我已经尝试了各种DateFormatters并将字符串合并在一起但是.Long for date和.short for time的组合似乎不起作用.

string date swift

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

MFMailComposeViewController视图不会第二次关闭

我有一个唯一的问题。我无法关闭电子邮件窗口。我正在使用Xcode 8。

电子邮件在我第一次打开时可以正确关闭,但是如果我再次打开它则不会。如果我按“取消”,则不能选择“删除草稿”。如果我按“发送”,则发送电子邮件,但窗口不会关闭。

我的代码如下。在mailComposeController被称为正确的第一次,但它从来没有被称为第二次。有人对我缺少的东西有任何想法吗?

let mail = MFMailComposeViewController()
func sendEmail(body: String, subject: String) {
    if MFMailComposeViewController.canSendMail() {
        mail.mailComposeDelegate = self

        mail.setSubject(subject)
        mail.setMessageBody("\(body)", isHTML: false)

        if let data = (body as NSString).data(using: String.Encoding.utf8.rawValue){
            //Attach File
            mail.addAttachmentData(data, mimeType: "text/plain", fileName: "data.txt")
        }

        present(mail, animated: true)
    } else {
        // show failure alert
    }
}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    controller.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

email messageui ios swift

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

Swift 3 Cocoa:使用 QuickLook 在 OS X 中预览文件

Xcode 8.3.2 我在命令列表中找不到 QLPreviewPanel 并且我不知道如何做(必须使用哪个命令)在 ViewController 中显示文件预览。

macos xcode quicklook swift

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

如何使用 Swift 更新数组中所有元素的特定属性值

假设我已经有一个数组,ViewHolder其中viewHolderList: [ViewHolder]. 我希望所有isMarried元素字段在一行中都为“ false ”而不循环。

struct ViewHolder {
    var name: String?
    var age: Int?
    var isMarried: Bool = true
}
Run Code Online (Sandbox Code Playgroud)

arrays swift

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

如何使用户仅在 SwiftUI 文本字段中输入数字与货币,同时保留 $ 和 .?

现在,我有以下内容:

private var currencyFormatter: NumberFormatter = {
    let f = NumberFormatter()
    // allow no currency symbol, extra digits, etc
    f.isLenient = true
    f.numberStyle = .currency
    return f
}()
Run Code Online (Sandbox Code Playgroud)
TextField("Total", value: $totalInput, formatter: currencyFormatter)
    .font(.largeTitle)
    .padding()
    .background(Color.white)
    .foregroundColor(Color.black)
    .multilineTextAlignment(.center)
Run Code Online (Sandbox Code Playgroud)

我希望文本字段以 0.00 美元作为占位符开始,但是当用户开始输入时,前两个输入将以美分填充...因此 5055 将逐渐显示为:

步骤 1(用户点击 5 次):0.05 美元
步骤 2(用户点击 0 次):0.50 美元
步骤 3(用户点击 5 次):5.05 美元
步骤 4(用户点击 5 次):50.55 美元

如果金额大于 $999,则将插入逗号。

如何实现这一目标?现在我的totalInput 类型是Double?。

currency textfield swift swiftui

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