我从带有AFNetworking的iTunes API获取数据,我想创建一个包含响应的字典,但我不能这样做.
错误:无法将表达式的类型"Dictionary"转换为"Hashable"类型
这是我的代码:
func getItunesStore() {
self.manager.GET( "https://itunes.apple.com/es/rss/topfreeapplications/limit=10/json",
parameters: nil,
success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
var jsonResult: Dictionary = responseObject as Dictionary
},
failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
println("Error:" + error.localizedDescription)
})
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试解析json,但我对数据类型有一些困难,特别是AnyObject类型+向下转换.
让我们考虑下面的json(它是一个完整的json的摘录).
{ "weather":
[
{
"id":804,
"main":"Clouds",
"description":"overcast clouds",
"icon":"04d"
}
],
}
Run Code Online (Sandbox Code Playgroud)
对我来说,json可以描述如下:
- json: Dictionary of type [String: AnyObject] (or NSDictionary, so = [NSObject, AnyObject] in Xcode 6 b3)
- "weather": Array of type [AnyObject] (or NSArray)
- Dictionary of type [String: AnyObject] (or NSDictionary, so = [NSObject, AnyObject] in Xcode 6 b3)
Run Code Online (Sandbox Code Playgroud)
我的json是AnyObject类型!(我用来JSONObjectWithData
从URL获取JSON).
然后我想访问天气词典.这是我写的代码.
var localError: NSError?
var json: AnyObject! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &localError)
if let dict = json as? [String: AnyObject] …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个NSFetchedResultsController
在UITableView中加载Core Data对象.与此FRC关联的获取请求使用viewContext
可用于NSPersistentContainer
(iOS10)的新属性.
当我选择一个单元格时,我将Core Data对象传递给一个新的ViewController.这个新的VC仍然使用viewContext.从这个ViewController,我可以从模态呈现的ViewControllers更新Core Data对象.为此,我使用newBackgroundContext()
模态ViewControllers.我可以毫无问题地保存更新Core Data对象.
问题是FRC不会使用后台上下文中的更新Core Data对象自动更新.就好像viewContext没有被接收并处理Core Data对象更新一样.
如果我automaticallyMergesChangesFromParent
为viewContext(app wide)设置为true,则FRC在保存背景上下文时获取更新的Core Data对象.根据我的理解,viewContext应该自动管理数据的合并.该文档描述了viewContext:"此上下文配置为生成并自动使用来自其他上下文的保存通知."
你能说明如何使用NSFetchResultController处理不同的上下文吗?
core-data nsfetchedresultscontroller nsmanagedobjectcontext ios ios10
I\xe2\x80\x99m 目前正在迁移我的应用程序以使用 Swift 中的并发模型。我想序列化任务以确保它们一个接一个地执行(无并行性)。在我的用例中,我想监听通知中心发布的通知,并在每次发布新通知时执行任务。但我想确保之前没有任务正在运行。这相当于使用 maxConcurrentOperationCount = 1 的操作队列。
\n例如,我\xe2\x80\x99m 在我的应用程序中使用 CloudKit 和 Core Data,并使用持久历史记录来确定存储中发生了哪些更改。\n在此将本地存储同步到云示例代码中,Apple 使用用于处理历史处理任务的操作队列(在CoreDataStack中)。此OperationQueue 的最大操作数设置为1。
\nprivate lazy var historyQueue: OperationQueue = {\n let queue = OperationQueue()\n queue.maxConcurrentOperationCount = 1\n return queue\n}()\n
Run Code Online (Sandbox Code Playgroud)\n当收到 Core Data 通知时,新任务将添加到该串行操作队列中。因此,如果收到多个通知,它们都会以串行方式一个接一个地执行。
\n@objc\nfunc storeRemoteChange(_ notification: Notification) {\n // Process persistent history to merge changes from other coordinators.\n historyQueue.addOperation {\n self.processPersistentHistory()\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n在此加载和显示大数据源示例代码中,Apple 使用任务来处理历史更改(在 QuakesProvider 中)。
\n// Observe Core Data remote change notifications on the queue where …
Run Code Online (Sandbox Code Playgroud) core-data nsoperationqueue grand-central-dispatch swift swift-concurrency
我拼命尝试让我的标签栏颜色尊重当前的配色方案。当应用程序启动时,颜色是正确的。但是,如果我切换深色和浅色模式,颜色不会切换回正确的颜色。始终应用灯光模式颜色。代码位于图像下方(针对演示进行了简化)。
颜色在目录中指定Assets.xcassets
(任意/浅色/深色)。
import SwiftUI
struct TabBarColorTest: View {
@Environment(\.colorScheme) var colorScheme
init() {
UITabBar.appearance().isTranslucent = true
UITabBar.appearance().tintColor = UIColor(named: "TabBarTint")
UITabBar.appearance().unselectedItemTintColor = UIColor(named: "TabBarUnselected")
UITabBar.appearance().barTintColor = UIColor(named: "TabBar")
UITabBar.appearance().backgroundColor = UIColor(named: "TabBar")
}
var body: some View {
TabView {
Text("Zero")
.tabItem {
Label("Zero", systemImage: "0.square.fill")
}
Text("One")
.tabItem {
Label("One", systemImage: "1.square.fill")
}
}
.onChange(of: colorScheme, perform: { value in
UITabBar.appearance().isTranslucent = true
UITabBar.appearance().tintColor = UIColor(named: "TabBarTint")
UITabBar.appearance().unselectedItemTintColor = UIColor(named: "TabBarUnselected")
UITabBar.appearance().barTintColor = UIColor(named: "TabBar")
UITabBar.appearance().backgroundColor = …
Run Code Online (Sandbox Code Playgroud) 我NSFetchedResultsController
在我的应用程序中使用带有自定义sectionNameKeyPath
(名为“ formattedDate
”)的a将表视图中的多个元素组合在一起。
该formattedDate
属性是在我的 NSManagedObject 的扩展中定义的一个属性(我使用 Xcode 自动代码进行类定义,这就是我在扩展中添加这个属性的原因)。此属性不在 Core Data 模型中(不是瞬态属性)。
extension ActivityMO {
var formattedDate: String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM yyyy"
return dateFormatter.string(from: endDate as Date!)
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序在 iOS10 上运行良好。
在 iOS11 上,我收到以下错误并且应用程序崩溃:
2017-08-10 11:52:12.735277+0200 *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[< ActivityMO 0x60000048f820> valueForUndefinedKey:]: the entity ActivityMO is not key value coding-compliant for the key "formattedDate".'
我究竟做错了什么?iOS11 有什么变化吗?
谢谢,
阿克塞尔
我正在 SwiftUI 应用程序(iOS 14、SwiftUI 2)中实现 Sign In With Apple。我正在导入 AuthenticationServices 框架。应用程序构建成功,可以在 iOS 设备或模拟器上运行。但是我无法在预览/画布中预览视图(设计视图会更容易)。
Cannot find 'SignInWithAppleButton' in scope
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?谢谢阿克塞尔
PS:Xcode 12 beta 6,macOS Big Sur beta 5
根据 Apple 的关于使用 Enum 的 SwiftUI 中的 Picker的文档,如果 enum 符合Identifiable
除 之外的协议,则CaseIterable
迭代所有情况的选择器应该本地更新绑定变量。
我测试了它,它没有按预期工作。
enum Flavor: String, CaseIterable, Identifiable {
case chocolate
case vanilla
case strawberry
var id: String { self.rawValue }
}
struct EnumView: View {
@State private var selectedFlavor = Flavor.chocolate
var body: some View {
VStack {
Picker("Flavor", selection: $selectedFlavor) {
ForEach(Flavor.allCases) { flavor in
Text(flavor.rawValue.capitalized)//.tag(flavor)
}
}
Text("Selected flavor: \(selectedFlavor.rawValue)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我tag
为每个视图传递一个,它就可以工作。
这里发生了什么事?苹果文档有错吗?该selectedFlavor
变量需要一个 type 值Flavor …
当我使用 SwiftUI 展示工作表时,所有内容都以粗体显示。如果我轻扫一下,粗体就会消失。
例子:
.navigationBarItems(leading:
Button(action:{
self.isSheetPresented.toggle()
}) {
Text("Display")
}
.frame(width: 25, height: 45)
.sheet(isPresented: $isSheetPresented) {
Textfield("Hello", text: $binding)
})
}
Run Code Online (Sandbox Code Playgroud)
除了申请,还有没有简单的解决方法
.fontWeight(.regular) or .font(.body)
Run Code Online (Sandbox Code Playgroud)
一切?
PS:在 MacOS 11.0 Beta (20A5395g) 上运行 Xcode Version 12.2 beta 3 (12B5035g)
为什么 LazyHStack 在高度方面的行为与 HStack 不同?(VStack 也一样)。
import SwiftUI
struct LazyTestView: View {
var body: some View {
LazyHStack {
ForEach(1...10, id: \.self) { int in
Text("\(int)")
}
}
}
}
struct LazyTestView_Previews: PreviewProvider {
static var previews: some View {
LazyTestView()
.previewLayout(.sizeThatFits)
}
}
Run Code Online (Sandbox Code Playgroud)
而使用 HStack 时:
import SwiftUI
struct LazyTestView: View {
var body: some View {
HStack {
ForEach(1...10, id: \.self) { int in
Text("\(int)")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
.fixedSize()
一种解决方案是为 LazyHStack添加...
PS:Xcode版本12.5测试版(12E5220o)
我有一个带有 Core Data 模型的 SwiftUI 应用程序。该模型包含一些具有属性的实体。画布按预期工作,显示预览。
但是每当我添加一个新实体,没有任何属性的事件时,画布都无法显示预览(事件中只有一个文本视图的基本视图)。错误消息如下:
无法在此文件中预览 - 操作无法完成。交易失败。进程未能启动。
我试图清理我的缓存、派生数据文件夹、重置模拟器等。当我点击诊断时,这里是消息:
错误域=FBProcessExit Code=4 “进程崩溃了。” UserInfo={NSLocalizedFailureReason=进程崩溃。, BSErrorCodeDescription=crash, NSUnderlyingError=0x600002f29dd0 {Error Domain=signal Code=4 "SIGILL(4)" UserInfo={NSLocalizedFailureReason=SIGILL(4)}}}
RemoteHumanReadableError: 操作无法完成。交易失败。进程未能启动。(进程启动失败)
BSTransactionError (1): ==error-description: 进程启动失败。==precipitating-error: Error Domain=FBProcessExit Code=4 “进程崩溃了。” UserInfo={NSLocalizedFailureReason=进程崩溃。, BSErrorCodeDescription=crash, NSUnderlyingError=0x600002f29dd0 {Error Domain=signal Code=4 "SIGILL(4)" UserInfo={NSLocalizedFailureReason=SIGILL(4)}}} ==NSLocalizedFailureReason: Transaction failed.Reason 进程未能启动。(进程启动失败) ==transaction: <FBApplicationProcessLaunchTransaction: 0x60000186d960> ==error-reason: 进程启动失败
知道为什么我有那个吗?
谢谢,阿克塞尔
PS:我使用的是 Xcode 12 beta 6(也在 beta 5 上尝试过)。我使用的是 macOS Big Sur (20A5364e)。