小编alp*_*nec的帖子

在swift中将AnyObject转换为Dictionary

我从带有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)

dictionary swift

44
推荐指数
1
解决办法
5万
查看次数

在Swift,AnyObject类型中解析json

我正在尝试解析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)

parsing json swift

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

核心数据iOS10:viewContext没有使用NSFetchResultController从newBackgroundContext()接收更新

在我的应用程序中,我有一个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

30
推荐指数
3
解决办法
4806
查看次数

Swift 5.5 并发:如何序列化异步任务以用 maxConcurrentOperationCount = 1 替换 OperationQueue?

I\xe2\x80\x99m 目前正在迁移我的应用程序以使用 Swift 中的并发模型。我想序列化任务以确保它们一个接一个地执行(无并行性)。在我的用例中,我想监听通知中心发布的通知,并在每次发布新通知时执行任务。但我想确保之前没有任务正在运行。这相当于使用 maxConcurrentOperationCount = 1 的操作队列。

\n

例如,我\xe2\x80\x99m 在我的应用程序中使用 CloudKit 和 Core Data,并使用持久历史记录来确定存储中发生了哪些更改。\n在此将本地存储同步到云示例代码中,Apple 使用用于处理历史处理任务的操作队列(在CoreDataStack中)。此OperationQueue 的最大操作数设置为1。

\n
private 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

10
推荐指数
1
解决办法
3927
查看次数

SwiftUI 2.0 - TabView 选项卡栏颜色不遵循当前的配色方案(深色或浅色模式)

我拼命尝试让我的标签栏颜色尊重当前的配色方案。当应用程序启动时,颜色是正确的。但是,如果我切换深色和浅色模式,颜色不会切换回正确的颜色。始终应用灯光模式颜色。代码位于图像下方(针对演示进行了简化)。

具有正确颜色的深色模式标签栏

具有正确颜色的灯光模式选项卡栏

带有扭曲颜色的深色模式标签栏

颜色在目录中指定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)

tabbar tabview swiftui

6
推荐指数
1
解决办法
4212
查看次数

核心数据 iOS11 - 带有自定义属性的 sectionNameKeyPath 中的 NSUnknownKeyException 崩溃

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 有什么变化吗?

谢谢,

阿克塞尔

core-data nsfetchedresultscontroller ios ios11

5
推荐指数
0
解决办法
334
查看次数

在范围内未找到 SignInWithAppleButton (SwiftUI 2)

我正在 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

xcode swiftui sign-in-with-apple

5
推荐指数
1
解决办法
865
查看次数

由枚举驱动的 SwiftUI 选择器:值未更新

根据 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 swiftui-picker

5
推荐指数
1
解决办法
685
查看次数

SwiftUI 表加粗

当我使用 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)

swiftui swiftui-form

3
推荐指数
1
解决办法
190
查看次数

为什么 LazyHStack 在 SwiftUI 中采用全高,而 HStack 不采用全高?

为什么 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)

swiftui vstack hstack

3
推荐指数
1
解决办法
1789
查看次数

将实体添加到 Core Data 模型会阻止 Canvas Preview 显示

我有一个带有 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)。

xcode core-data swiftui

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