我正在构建一个在 TableViewController 中显示远程 iBeacon 的 iOS 应用程序。
为了提高性能并测试新的 Swift 5.1 差异功能,我编写了以下代码:
private func updateBeacons(_ rangedBeacons: [CLBeacon]) {
guard beacons != rangedBeacons else { return }
let difference = rangedBeacons.difference(from: beacons)
// Also tried:
// let difference = rangedBeacons.difference(from: beacons, by: { $0.uuid == $1.uuid })
// ...
}
Run Code Online (Sandbox Code Playgroud)
当到达此代码时,将fatalError抛出:
致命错误:不受支持:文件 /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1100.2.259.70/swift/stdlib/public/core/ArrayBuffer.swift,第 231 行
如何对CLBeacons执行收集差异?
引用的代码可以在这里找到:https : //github.com/apple/swift/blob/master/stdlib/public/core/ArrayBuffer.swift#L226-L232
我需要一种方法将化学式分离成其组分.结果应如下所示:
Ag3PO4 -> [Ag3, P, O4]
H2O -> [H2, O]
CH3OOH -> [C, H3, O, O, H]
Ca3(PO4)2 -> [Ca3, (PO4)2]
Run Code Online (Sandbox Code Playgroud)
我不知道正则表达式语法,但我知道我需要这样的东西
[可选括号] [大写字母] [0或更多小写字母] [0或更多数字] [可选括号] [0或更多数字]
这很有效
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"[A-Z][a-z]*\\d*|\\([^)]+\\)\\d*"
options:0
error:nil];
NSArray *tests = [[NSArray alloc ] initWithObjects:@"Ca3(PO4)2", @"HCl", @"CaCO3", @"ZnCl2", @"C7H6O2", @"BaSO4", nil];
for (NSString *testString in tests)
{
NSLog(@"Testing: %@", testString);
NSArray *myArray = [regex matchesInString:testString options:0 range:NSMakeRange(0, [testString length])] ;
NSMutableArray *matches = [NSMutableArray arrayWithCapacity:[myArray count]];
for (NSTextCheckingResult *match in myArray) { …Run Code Online (Sandbox Code Playgroud) 我UIRefreshControl在我的tableview上使用更新项目.最后,我展示了一个UIAlertController通知用户更新已完成,以及更新了多少项目.非常简单,它适用于一件事.如果我连续多次刷新,有时即使解除警报后刷新控制也不会被解除.我需要向上滑动桌子才能让它消失.
这是我使用的代码,所有UI的东西都很好地在主线程上完成:
if(refreshControl.refreshing) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self refreshItems];
dispatch_async(dispatch_get_main_queue(), ^{
[refreshControl endRefreshing];
[self.tableView reload];
[self showUpdateInfo];
});
});
}
Run Code Online (Sandbox Code Playgroud)
知道是什么原因引起的吗?
编辑:这是我在代码(in viewDidLoad)中创建刷新控件的方式:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString: @"Checking for updates…"];
[refreshControl addTarget: self
action: @selector(refreshOutdatedItems)
forControlEvents: UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud) 我将不再preferredContentSizeChanged用于adjustsFontForContentSizeCategory我的UILabel、UITextView、 和UITextField课程。它适用于UILabel,但不适用于UITextView和UITextField。setNeedsDisplay仅当我调用inside时它才有效preferredContentSizeChanged。
我缺少什么?
我的目标是将模态呈现的控制器的角半径增加到 25。正如您在图片中看到的,默认情况下它具有圆角,但我需要它们具有更大的半径。我尝试通过访问控制器视图来圆角,但它不起作用。
view.layer.cornerRadius = 25
Run Code Online (Sandbox Code Playgroud)
我在苹果文档中没有找到任何提及它,有什么办法让它工作吗?这可能吗?
我正在使用我自己设置的UINavigationBars的自定义颜色(在iOS7上) didFinishLaunchingWithOptions:
[[UINavigationBar appearance] setBarTintColor: [UIColor mainThemeColor]];
Run Code Online (Sandbox Code Playgroud)
这很好用,但在我的两个屏幕中,我看到了一些很奇怪的东西.当视图出现时,我看到一个黑暗的光晕从右边移动,并且条形的颜色最终比我设置的颜色更深.我尝试在viewDidAppear等人中设置颜色,但同样的事情发生了.
我不知道如何发生这种情况,我的所有视图和viewControllers都设置相同.
此外,当应用程序在后台,我转到应用程序切换视图(所有微型屏幕),这两个屏幕的栏是完全黑暗,而不是主题颜色.
有没有人见过这个?
编辑:它与调用self.edgesForExtendedLayout = UIRectEdgeNone;我的视图控制器有关.如果我删除该行,则导航栏的颜色仍然正确.但是,在这种情况下,我的部分视图是隐藏的.
我发现自己AFHTTPRequestOperationManager在整个代码中重复使用了很多代码,所以我在考虑对它进行子类化,所以我可以将它设置为单例,并将所有代码放在子类中,而不是通过我的代码展开项目.然而,在AFNetworking 2.0(http://nshipster.com/afnetworking-2/)的NSHipster剧集中,它说:
2.0中的主要区别在于,您实际上将直接使用此类,而不是将其子类化,原因在"序列化"部分中进行了解释.
由于AFNetworking和NSHipster拥有相同的作者,我认为这是一个有效的论点.
所以我的问题是,AFHTTPRequestOperationManager为了在一个类中使用大多数网络代码,人们是否为子类,或者我是否忽略了使用框架的某些内容?
所以这个问题是对这个问题的跟进:快速字符串排列允许相同的字符串
在那里,我询问了我可以使用一组已定义的字符串进行的所有可能的突变.我接下来要做的是过滤掉所有具有相同组合但结果不同的结果.
因此,如果输入为:["AB", "AC", "CA", "CB"],则输出应为["AB", "AC", "CB"],因为"AC"和"CA"具有相同的构建块.
所以我的想法是先按字母顺序排序每个字符串,然后创建一个Set.
我已经卡在第一部分:(
let array = ["AB", "AC", "DC", "CA", "CB"]
print(type(of: array))
print(array)
let sortedArray = array.map{ $0.sorted() }
print(type(of: sortedArray))
print(sortedArray)
Run Code Online (Sandbox Code Playgroud)
输出是:
Array<String>
["AB", "AC", "DC", "CA", "CB"]
Array<Array<Character>>
[["A", "B"], ["A", "C"], ["C", "D"], ["A", "C"], ["B", "C"]]
Run Code Online (Sandbox Code Playgroud)
虽然我期待sortedArray:
["AB", "AC", "CD", "AC", "BC"]
Run Code Online (Sandbox Code Playgroud)
然后我想把各个字符串加在一起:
print(array.map{ $0.joined() } )
Run Code Online (Sandbox Code Playgroud)
导致 ambiguous reference to member 'joined()'
但是如何解决这个我不明白.
我也看到了这一个:字符串中的swift排序字符,其中使用了以下代码:
var nonSortedString …Run Code Online (Sandbox Code Playgroud) 安装 macOS Catalina 更新后,我无法再使用我的程序(Spyder GUI)。我想读取不在当前工作区中的文件并对它们执行操作。读取文件目录时,出现此错误:
PermissionError: [Errno 1] 不允许操作: {file directory}
当前工作区中的文件没问题。
正在为框架实施 SPM,但遇到了Type 'Bundle' has no member “module”错误。
我最近在这里和这里看到了另外两篇关于此的帖子,但是按照所有步骤操作,它仍然对我不起作用,没有resource_bundle_accessor生成任何文件。
我在这里询问了我的 Package.swift 文件,这个问题已经得到解答和解决。为了完整起见,这里是文件:
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "BioSwift",
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
name: "BioSwift",
targets: ["BioSwift"]
)
],
targets: [
// Targets are the basic building blocks …Run Code Online (Sandbox Code Playgroud) ios ×5
objective-c ×3
swift ×3
arrays ×1
cocoa-touch ×1
cornerradius ×1
dynamic ×1
font-size ×1
ios7 ×1
macos ×1
permissions ×1
regex ×1
sorting ×1
spyder ×1
string ×1
swift4 ×1
uiview ×1
xcode ×1