我的应用程序是用 SwiftUI 编写的,使用 Cloudkit 来存储核心数据中的记录。我能够获取用于@FetchRequest填充列表的记录。现在我想获取当前用户的 iCloud ID 并将其与另一个全局 ID 进行比较,但我遇到了问题fetchUserRecordID...
查看 Cloudkit Dashboard 的记录类型时,我可以看到用户记录Users。但每次运行下面的代码时,我都会收到以下错误:“无法从容器“iCloud.com.my_container_name”的服务器获取容器配置”
我正在运行 Xcode 12.2 Beta 4
ContentView.swift
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
init() {
isCreator()
}
var body: some View {
Text("Hello World")
}
func isCreator() {
CKContainer.default().fetchUserRecordID(completionHandler: { (recordId, error) in
guard let record = recordId, error == nil else {
print("Error: \(error!.localizedDescription)")
return
}
print("Found record")
// Now do something with record...
})
}
} // …Run Code Online (Sandbox Code Playgroud) struct DottedLine: Shape {
func path(in rect: CGRect) -> Path {
var path = Path()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: rect.width, y: 0))
return path
}
}
DottedLine()
.stroke(style: StrokeStyle(lineWidth: 1, dash: [2]))
.frame(height: 1)
.foregroundColor(Color.red)
Run Code Online (Sandbox Code Playgroud)
这将创建一条水平虚线。但如何让它垂直呢?如果我将 Divider() 放入 HStack 中,那么它会变成垂直的,但如何用虚线实现相同的效果?
我创建了一个 UICollectionView Xib 文件和类文件作为 swift 包。类文件中的方法是可以访问的,但我在项目中加载 nib 文件时遇到错误。
包链接: https: //github.com/PranayChander/package1
项目链接: https: //github.com/PranayChander/packman
导入 UIKit 导入包1
class ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(UINib(nibName: "PackageCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")
}
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! PackageCollectionViewCell
cell.configureCell(title: "Pram", subtitle: "dasd")
return …Run Code Online (Sandbox Code Playgroud) package-managers ios uicollectionview swift-package-manager ios14
我想我知道这个问题的答案,但我会把它作为一个问题提出并给出我的答案,因为这对我来说有点令人困惑,并且我花了一些时间才弄清楚。
我刚刚开始Menu在 SwiftUI 中使用 's 。在我的第一个应用程序中,我在应用程序的导航栏中使用了它们。
Menu {
ForEach(pickers, id: \.mediaPickerUIDisplayName) { picker in
Button(action: {
viewModel.sheetToShow = .picker(picker)
}) {
Text(picker.mediaPickerUIDisplayName)
}.enabled(picker.mediaPickerEnabled)
}
} label: {
SFSymbolIcon(symbol: .plusCircle)
}
Run Code Online (Sandbox Code Playgroud)
看起来不错。
然后,我更改了使用相同代码的上下文。我没有在导航栏中使用它,而是在屏幕中央使用它。相反,我看到:
我感到不安的是,列表中项目从上到下的顺序发生了变化。
在 iOS 14 模拟器上使用以下代码,所有日志语句都以明文形式打印。没有修改或散列发生。在 Xcode 控制台和 Mac 上的 Console.app 中。
是否还需要其他任何内容来测试修订是否有效?
let email = "apple@stackoverflow.com"
let logger = Logger()
logger.log("\(email, privacy: .auto)")
logger.log("\(email, privacy: .auto(mask: .hash))")
logger.log("\(email, privacy: .private)")
logger.log("\(email, privacy: .private(mask: .hash))")
Run Code Online (Sandbox Code Playgroud) 我现有的和新的应用程序无法处理 iOS 14 上的延迟深层链接。直到我更新到 iOS 14 才发生这种情况。
步骤:
AppLinkUtility.fetchDeferredAppLink是所谓的,但url并error始终为零。iOS 14 中的新功能,我们可以将动作处理程序直接附加到 UIControl:
let action = UIAction(title:"") { action in
print("howdy!")
}
button.addAction(action, for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)
这很酷,但语法令人愤怒。我必须先形成 UIAction。我必须给 UIAction 一个标题,即使该标题永远不会出现在界面中。没有更好的办法吗?
根据 Apple 的说法,如果您在“未确定”授权时要求您的 Core Location 应用程序获得 Always 授权,则用户会看到“When In Use”授权对话框,但实际上您的应用程序获得了 Always 授权 - 临时授权。
这应该意味着如果您实际上不使用您的 Always 权力,您将失去它们,恢复到使用时。
好的,但是这种逆转何时会发生?我似乎无法让它发生。我的应用程序只是停留在 Always 授权,即使用户认为它只是 When In Use 授权。
这是我的测试应用程序(iOS 14)的完整代码:
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var label: UILabel!
let locman = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locman.delegate = self
}
@IBAction func doAskForAlways(_ sender: Any) {
self.checkForLocationAccess(always:true)
}
func checkForLocationAccess(always:Bool = false, andThen f: (()->())? = nil) {
let status = self.locman.authorizationStatus()
switch status {
case .authorizedWhenInUse: …Run Code Online (Sandbox Code Playgroud) 在 IOS14 中,为了使用Advertising Identifier您需要请求许可,但是 AppStore 上已经可用的应用程序的行为是什么(使用 IOS13 SDK 编译)?
我已将设备更新到 IOS14 Beta 4 并从 AppStore 下载了应用程序。打开应用程序后,它不会自动要求任何跟踪权限,Advertising Identifier而是00000-0000-0000.
这是否意味着我必须提交使用 IOS14 SDK 编译的应用程序更新并请求跟踪许可,否则Advertising Identifier将不可用?
苹果会在今年发布iPhone12,iPhone12(一些更高的设备类型)可以支持5G功能,我认为iPhone12应该是基于iOS14平台的,所以我查看了iOS14 API,但我们找不到任何关于 5G 的新 API。有人知道iPhone12的5G检测的一些信息吗?
感谢任何人提供的信息!
iOS14 API 差异:https : //developer.apple.com/documentation/technologies? changes = latest_major