小编Rob*_*Rob的帖子

NSDate昨天

如何NSDate使用除当前日期之外的自定义日期创建对象?例如,我想创建一个昨天或两天前的变量.

nsdate swift

41
推荐指数
3
解决办法
2万
查看次数

如何将Double格式化为货币 - Swift 3

我是Swift编程的新手,我一直在Xcode 8.2中创建一个简单的tip计算器应用程序,我的计算设置在我的IBAction下面.但是当我实际运行我的应用并输入要计算的金额(例如23.45)时,它会出现超过2个小数位..currency在这种情况下如何格式化?

@IBAction func calculateButtonTapped(_ sender: Any) {

    var tipPercentage: Double {

        if tipAmountSegmentedControl.selectedSegmentIndex == 0 {
            return 0.05
        } else if tipAmountSegmentedControl.selectedSegmentIndex == 1 {
            return 0.10
        } else {
            return 0.2
        }
    }

    let billAmount: Double? = Double(userInputTextField.text!)

    if let billAmount = billAmount {
        let tipAmount = billAmount * tipPercentage
        let totalBillAmount = billAmount + tipAmount

        tipAmountLabel.text = "Tip Amount: $\(tipAmount)"
        totalBillAmountLabel.text = "Total Bill Amount: $\(totalBillAmount)"
    }
}
Run Code Online (Sandbox Code Playgroud)

formatting currency ios swift

40
推荐指数
7
解决办法
4万
查看次数

如何防止 Actor 重入导致重复请求?

在 WWDC 2021 视频中,使用 Swift Actor 保护可变状态中,他们提供了以下代码片段:

\n
actor ImageDownloader {\n    private var cache: [URL: Image] = [:]\n\n    func image(from url: URL) async throws -> Image? {\n        if let cached = cache[url] {\n            return cached\n        }\n\n        let image = try await downloadImage(from: url)\n\n        cache[url] = cache[url, default: image]\n\n        return cache[url]\n    }\n\n    func downloadImage(from url: URL) async throws -> Image { ... }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

问题是 actor 提供可重入性,因此cache[url, default: image]引用有效地确保即使您由于某些竞争而执行了重复的请求,您至少在继续之后检查 actor\xe2\x80\x99s 缓存,确保您获得相同的图像对于重复的请求。

\n

在那段视频中,他们

\n
\n …

async-await swift swift-concurrency

34
推荐指数
3
解决办法
2604
查看次数

async/await、Task 和 [weak self]

好的,我们都知道,在 Swift 的传统并发中,如果您在类中执行(例如)网络请求,并且在完成该请求时您引用了属于该类的函数,则必须传入[weak self],例如这:

func performRequest() {
   apiClient.performRequest { [weak self] result in
      self?.handleResult(result)
   }
}
Run Code Online (Sandbox Code Playgroud)

这是为了阻止我们self在闭包中强烈捕获并导致不必要的保留/无意中引用已经从内存中删除的其他实体。

在异步/等待中怎么样?我在网上看到了相互矛盾的事情,所以我只想向社区发布两个示例,看看您对这两个示例有何看法:

class AsyncClass {
   func function1() async {
      let result = await performNetworkRequestAsync()
      self.printSomething()
   }

   func function2() {
      Task { [weak self] in
         let result = await performNetworkRequestAsync()
         self?.printSomething()         
      }
   }

   func function3() {
      apiClient.performRequest { [weak self] result in
         self?.printSomething()
      }
   }

   func printSomething() {
      print("Something")
   }
}

Run Code Online (Sandbox Code Playgroud)

function3很简单 - 老式并发意味着使用[weak self]. function2我认为是对的,因为我们仍在闭包中捕获内容,所以我们应该使用[weak …

concurrency ios async-await swift swift-concurrency

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

在python中删除()和[]之间的文本

我有一长串文字()[]里面的文字.我试图删除括号和括号之间的字符,但我无法弄清楚如何.

该列表与此类似:

x = "This is a sentence. (once a day) [twice a day]"
Run Code Online (Sandbox Code Playgroud)

这个列表不是我正在使用的,但非常相似,而且更短.

谢谢您的帮助.

python python-2.7

29
推荐指数
6
解决办法
5万
查看次数

实现UIKitDynamics以将视图拖离屏幕

我正在尝试找出与Jelly的应用程序类似的工具UIKit Dynamics(特别是向下滑动以在屏幕外拖动视图).

看动画:http://vimeo.com/83478484(@ 1:17)

我理解UIKit Dynamics是如何工作的,但是没有很好的物理背景,因此无法梳理不同的行为以获得理想的结果!

objective-c uikit ios ios7 uikit-dynamics

28
推荐指数
2
解决办法
9024
查看次数

Creating a blur effect in iOS7

I have been searching for an answer to this question in a few hours now, and I just can't figure it out. I want to add a gaussian blur effect to the image when i press the button "Button". The user is the one that is adding the image.

I have created an action for the "Button" based on sources from SO and other places on the web. It will not work. What am I doing wrong? Any code would …

uiimage cifilter ciimage ios7

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

在Swift中过滤[AnyObject]的数组

AnyObject在Swift中有一个对象数组.每个对象都有一个餐馆的属性,例如名称,类型,位置等.如果我想保留数组中包含类型的所有对象:"Sushi",我如何过滤数组.

[AnyObject]包含2个对象的示例数组.过滤器应该保留第一个对象(类型:寿司):

[<Restaurant: 0x7ff302c8a4e0, objectId: LA74J92QDA, localId: (null)> {
    City = "New York";
    Country = "United States";
    Name = Sumo Japan;
    Type = Sushi, Japanese, Asian;
}, <Restaurant: 0x7ff302daa790, objectId: 0aKFrpKN46, localId: (null)> {
    City = "New York";
    Country = "United States";
    Name = Little Italy;
    Type = Italian, Pizza;
}]
Run Code Online (Sandbox Code Playgroud)

当前代码(但我不确定过滤器是否可以搜索数组[AnyObject]):

var query = PFQuery(className:"Restaurant")
query.whereKey("RestaurantLoc", nearGeoPoint:userGeoPoint, withinMiles:50)
query.limit = 2
query.findObjectsInBackgroundWithBlock {
    (objects: [AnyObject]!, error: NSError!) -> Void in
    if objects != nil …
Run Code Online (Sandbox Code Playgroud)

filter parse-platform swift

26
推荐指数
4
解决办法
6万
查看次数

如何从 GCD (DispatchQueue) 转换为 Swift async/await?

我正在关注斯坦福大学的 CS193p 开发 iOS 应用程序在线课程。

它使用 Grand Central Dispatch (GCD) API 来演示多线程。但他们指出,

“自 WWDC 2021 起,GCD 已大部分被 Swift 新的内置异步 API 取代”。

因此,我想了解讲座中的代码在更新以使用这个新 API 后会是什么样子。

观看 Apple 的 WWDC 视频后,在我看来,
DispatchQueue.global(qos: .userInitiated).async { }这个新的异步 API 中被替换为Task { }Task(priority: .userInitiated) {},但我不确定,被DispatchQueue.main.async { }替换为什么?

所以,我的问题是:

  1. 我是否正确地假设,它DispatchQueue.global(qos: .userInitiated).async { }已被替换为Task(priority: .userInitiated) {}
  2. 被什么DispatchQueue.main.async { }取代了?

请帮忙,我想学习这个新的 async-await API。

以下是讲座中的代码,使用旧的 GCD API:

DispatchQueue.global(qos: .userInitiated).async {
    let imageData = try? Data(contentsOf: url)
    DispatchQueue.main.async { …
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch async-await swift

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

如何在iOS中的UIImageView中裁剪圆圈内的图像

我有一个应用程序,我有一个UIImageView显示主图像和另一个UIImageView被用作掩码,显示一个透明的圆形和不透明的外面,这个圆圈可以使用a移动UIPanGestureRecognizer,我想知道一个方法来裁剪里面的图像将圆圈变成新的图像.这是附加的代码和屏幕截图

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    // create pan gesture

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                          action:@selector(handlePan:)];
    [self.view addGestureRecognizer:pan];


    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.path = [[self makeCircleAtLocation:self.view.center radius:100.0] CGPath];
    shapeLayer.strokeColor = [[UIColor clearColor] CGColor];
    shapeLayer.fillColor = nil;
    shapeLayer.lineWidth = 3.0;

    // Add CAShapeLayer to our view

    [self.view.layer addSublayer:shapeLayer];

    // Save this shape layer in a class property for future reference,
    // namely so we …
Run Code Online (Sandbox Code Playgroud)

uiimageview ios

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