小编K.W*_*.Wu的帖子

如何用react redux更新'state'中的对象?

在我的reducer中,假设我最初有这种状态:

{
    "loading": false,
    "data": {
        "-L1LwSwW97KkwdSnYvsc": {
            "likeCount": 10,
            "liked": false,    // I want to update this property
            "commentCount": 5
        },
        "-L1EY2_fqzn7sM1Mbf_F": {
            "likeCount": 8,
            "liked": true,
            "commentCount": 22
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想更新对象liked内部的-L1LwSwW97KkwdSnYvsc属性,这是data对象内部并制作它true.这是我一直在尝试的,但显然,这是错误的,因为在我更新状态后,componentWillReceiveProps侦听状态更改的组件内的函数不会被触发:

var { data } = state;
data['-L1LwSwW97KkwdSnYvsc'].liked = !data['-L1LwSwW97KkwdSnYvsc'].liked;

return { ...state, data };
Run Code Online (Sandbox Code Playgroud)

你能说明为什么它是错的,我应该如何改变它以使它工作?

react-native redux react-redux

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

有权限在 Swift 中读取视频文件但不能读取图像文件吗?

我在 Swift 中编写了一个图像选择器(NOT UIImagePickerController),按下“完成”后,我返回所选 PHAssets(图像或视频或两者)的 URL,然后将它们上传到 firebase 存储。

图像的 URL 如下所示: file:///var/mobile/Media/DCIM/101APPLE/IMG_1239.PNG

视频的 URL 如下所示: file:///var/mobile/Media/DCIM/101APPLE/IMG_1227.MOV

然后我显示 PHAsset。播放视频资产没有问题:

let player = AVPlayer(url: url)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.frame
playerLayer.videoGravity = .resizeAspectFill
view.layer.addSublayer(playerLayer)
player.play()
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用其 URL 显示图像时,出现“无权读取文件”错误:

do {
    let data = try Data(contentsOf: url)
    imageView.image = UIImage(data: data)
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

我确实有权访问用户的照片库,这就是图像选择器工作正常的原因。我只是无法使用它们的 URL 读取图像文件。

我在想,也许我应该将图像资产复制到临时文件并从那里读取它,但是为什么视频资产可读但不是图像资产没有任何意义。

- - - - - - - 更新 - - - - - - -

这就是我获取 PHAsset 网址的方式 …

ios avasset swift phasset

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

如何在 Swift 中传递“T”类型的“序列”作为参数?

假设我有一个函数,它接受一系列“Person”对象。该序列可以是一个简单的数组,或者 RealmSwift 的 Result,或者 List:

// A simple array
func someFunction(people: [Person]) {

}

// Result
func someFunction(people: Result<Person>) {

}

// List
func someFunction(people: List<Person>) {

}
Run Code Online (Sandbox Code Playgroud)

我不想拥有这 3 个函数,而是只想要 1 个函数,该函数采用“Person”对象的通用序列,如下所示:

func someFunction(people: Sequence<Person>) {

}
Run Code Online (Sandbox Code Playgroud)

这样,我可以将数组、结果或列表传递给函数,而不必担心类型不匹配。但显然这在 Swift 中是不允许的。那我该怎么做呢?

ios swift

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

Swift中出现“文件夹'Documents'不存在”错误

我试图在Swift的文档文件夹中获取文件列表,这是一个代码片段:

let fileManager = FileManager.default
if let dir = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
    print(dir.absoluteString)                // print 1

    do {
        let files = try fileManager.contentsOfDirectory(atPath: dir.absoluteString)
        print(files)                         // print 2
    } catch {
        print(error.localizedDescription)    // print 3
    }
}
Run Code Online (Sandbox Code Playgroud)

然后“ print 1”打印:

文件:///用户/.../.../文档/

和“ print 3”打印:

文件夹“文档”不存在。

当前,该文件夹中保存了很多文件,至少我的default.realm文件在那里。为什么会这样?

ios swift

0
推荐指数
1
解决办法
831
查看次数

标签 统计

ios ×3

swift ×3

avasset ×1

phasset ×1

react-native ×1

react-redux ×1

redux ×1