我是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) 在 WWDC 2021 视频中,使用 Swift Actor 保护可变状态中,他们提供了以下代码片段:
\nactor 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}\nRun Code Online (Sandbox Code Playgroud)\n问题是 actor 提供可重入性,因此cache[url, default: image]引用有效地确保即使您由于某些竞争而执行了重复的请求,您至少在继续之后检查 actor\xe2\x80\x99s 缓存,确保您获得相同的图像对于重复的请求。
在那段视频中,他们说:
\n\n …
好的,我们都知道,在 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 …
我有一长串文字()和[]里面的文字.我试图删除括号和括号之间的字符,但我无法弄清楚如何.
该列表与此类似:
x = "This is a sentence. (once a day) [twice a day]"
Run Code Online (Sandbox Code Playgroud)
这个列表不是我正在使用的,但非常相似,而且更短.
谢谢您的帮助.
我正在尝试找出与Jelly的应用程序类似的工具UIKit Dynamics(特别是向下滑动以在屏幕外拖动视图).
看动画:http://vimeo.com/83478484(@ 1:17)
我理解UIKit Dynamics是如何工作的,但是没有很好的物理背景,因此无法梳理不同的行为以获得理想的结果!
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 …
我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) 我正在关注斯坦福大学的 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 { }替换为什么?
所以,我的问题是:
DispatchQueue.global(qos: .userInitiated).async { }已被替换为Task(priority: .userInitiated) {}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) 我有一个应用程序,我有一个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) swift ×6
ios ×4
async-await ×3
ios7 ×2
cifilter ×1
ciimage ×1
concurrency ×1
currency ×1
filter ×1
formatting ×1
nsdate ×1
objective-c ×1
python ×1
python-2.7 ×1
uiimage ×1
uiimageview ×1
uikit ×1