小编iph*_*aaw的帖子

使用未声明的类型AutoreleasingUnsafePointer Xcode 6 beta 6

以下代码给出了编译器错误"使用未声明的类型AutoreleasingUnsafePointer"

    var myString: AutoreleasingUnsafePointer<NSString?>
Run Code Online (Sandbox Code Playgroud)

我错过了编译器设置步骤吗?

谢谢

swift xcode6

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

在 Swift 中解码引用的可打印消息

我有一个带引号的可打印字符串,例如“The cost would be =C2=A31,000”。如何将其转换为“成本为 \xc2\xa31,000”。

\n\n

我目前只是手动转换文本,这并不涵盖所有情况。我确信只有一行代码可以帮助解决这个问题。

\n\n

这是我的代码:

\n\n
func decodeUTF8(message: String) -> String\n{\n    var newMessage = message.stringByReplacingOccurrencesOfString("=2E", withString: ".", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=A2", withString: "\xe2\x80\xa2", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=C2=A3", withString: "\xc2\xa3", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=A3", withString: "\xc2\xa3", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=9C", withString: "\\"", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=A6", withString: "\xe2\x80\xa6", options: NSStringCompareOptions.LiteralSearch, range: nil)\n    newMessage = newMessage.stringByReplacingOccurrencesOfString("=E2=80=9D", withString: "\\"", options: NSStringCompareOptions.LiteralSearch, range: nil)\n …
Run Code Online (Sandbox Code Playgroud)

macos utf-8 quoted-printable swift

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

突出显示 NSTextField 中的选择

我希望能够突出显示 NSTextField 中的一部分文本,但我无法通过谷歌来做到这一点。

我已经定义了一个 NSRange,但我找不到使用这个范围来突出显示文本的方法。我唯一出现的是 textField.selectText 但这应该突出显示整个字段。

我正在使用 Swift 2。

macos highlight nstextfield

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

如何覆盖 NSTableHeaderView 的布局?

我正在尝试为我的 NSTableView 生成自定义标头。我想更改标题文本的字体并删除边框和垂直分隔符。

我当前的顶部和底部标题如下所示:

在此处输入图片说明

有谁知道我该怎么做?

更新:应用修复后,标题现在看起来像我预期的那样:

在此处输入图片说明

nstableheaderview swift

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

Swift:在文件名中使用"/"斜杠和createDirectoryAtPath

我有一个名为"我/项目"的文件夹.当我尝试调用createDirectoryAtPath时,我得到两个文件夹"My",其子文件夹为"Project".

我看过终端如何代表这个:

/Users/currentuser/Documents/Projects/My\ \:\ Project
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

let projectName = "My / Project"
let path:NSString = "/Users/currentuser/Documents/Projects/"

let fullPath:NSString = path.stringByAppendingPathComponent(projectName)

if (!NSFileManager.defaultManager().fileExistsAtPath(fullPath:NSString))
{
    do 
    {
         try NSFileManager.defaultManager().createDirectoryAtPath(fullPath:NSString, withIntermediateDirectories: true, attributes: nil)
    }
    catch
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

projectName.stringByReplacingOccurrencesOfString("/", withString: "\:")
Run Code Online (Sandbox Code Playgroud)

匹配终端但Xcode抱怨无效的转义序列.

更新#1:编码文件夹名称也无法正常工作.

let encodedPath = projectName.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLUserAllowedCharacterSet())
let fullPath2:NSString = path.stringByAppendingPathComponent(encodedPath!)
NSFileManager.defaultManager().fileExistsAtPath(encodedPath!)
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方式是什么?

path swift

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

SwiftUI:没有在 DropDelegate 中删除 NSString 值

我正在尝试使用 NSString 实现简单的拖放。我可以使用 NSURL 但不能使用 NSString。每次我尝试拖放时,我总是得到一个零值。这是我的代码:

struct ContentView: View 
{

    var body: some View 
    {
        Text("Hello World")
            .onDrag { NSItemProvider(object: "Hello World" as NSString) }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是掉落的物体:

struct DroppedView: View, DropDelegate
{
    var body: some View 
    {
        Text("Drop here")
            .onDrop(of: ["public.text"], delegate: self)
    }

    func performDrop(info: DropInfo) -> Bool
    {
         if let items = info.itemProviders(for: ["public.text"]).first
         {
             item.loadItem(forTypeIdentifier: "public.text", options: nil)
             {
                 (data, error) in
                
                 print(data)
             }
         }
         return true
    }
}
Run Code Online (Sandbox Code Playgroud)

我本以为输出是“Hello World”。我缺少什么?

drag-and-drop swiftui nsitemprovider

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

Elixir:在case语句中使用变量

我有此case语句,该语句给出错误“变量constant1未使用”。似乎是忽略变量并返回顶行,因此变量显然没有作用域。如果我将常数替换为数字1,那么它将起作用。在Elixir中做到这一点的最佳方法是什么?

defmodule Main 
do
    def constant1, do: 1
    def constant2, do: 1
    def constant3, do: 1

    x = 1
    y = 0
    z = 0

    {a, b, c, d} = 
        case {x, y, z} do
            {constant1, constant2, constant3} -> {1, 2, 3, 4}
            {constant1, constant2, _} -> {5, 6, 7, 8}
            {constant1, _, _} -> {9, 10, 11, 12}
            {_, _, _} -> {13, 14, 15, 16}
        end

    IO.inspect {a, b, c, d}
end
Run Code Online (Sandbox Code Playgroud)

这是输出:

warning: variable constant1 is unused …
Run Code Online (Sandbox Code Playgroud)

constants case elixir

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

SwiftUI:Init 未初始化数组

在我看来,我在初始化数组时遇到问题:

struct ProjectList: View
{
    @ObservedObject var store: ProjectStore
    @Binding var searchText: String

    @State private var query: [Project] = []
    @State private var indexes: [String] = ["E","F"]
     
    init(store: ProjectStore, searchText: Binding<String>)
    {
        self.store = store
        self._searchText = searchText
        self.query = []
        self.indexes = ["C","D"]
        indexes = ["A","B"] //store.getIndexes(search: searchText.wrappedValue)
        print (indexes)
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我所期望的,在我的初始化例程中索引被设置为 ["E","F"] 而不是 ["A","B"] 。怎么了?

initialization swiftui

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

SwiftUI:如何在 macOS 11 上使用 NSSearchToolBarItem?

我观看了 WWDC 视频“采用 macOS 的新外观”,他们在视频中的 11:32 在 Swift 中介绍了 NSSearchToolBarItem。

这正是我需要做的,但是如何将此搜索添加到 SwiftUI 的工具栏中?

有很多复杂的例子,但它们似乎都是在这个新 API 之前编写的。一定有更简单的方法吗?

import SwiftUI

var listItems = ["Item 1", "Item 2", "Item 3", "Item 4"]

struct ContentView: View
{
    
    @State var select: String? = "Item 1"
    @State var searchText: String = "hello"

    var body: some View
    {
        VStack
        {
            NavigationView
            {
                List
                {
                    ForEach((0..<listItems.count), id: \.self)
                    {index in
                         Label(listItems[index], systemImage: "briefcase")
                    }
                }
            }
            
            .toolbar
            {
                Button(action: {})
                {
                    Label("Upload", systemImage: "square.and.pencil")
                }
                TextField("Search", text: $searchText) …
Run Code Online (Sandbox Code Playgroud)

toolbar swiftui macos-big-sur nssearchtoolbaritem

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

Swift:设置 NSProgressIndicator 的进度

我尝试使用以下方法设置我自己的 NSProgressIndicator。

class ProgressViewController : NSViewController 
{
    override func loadView()
    {
        let view = NSView(frame: NSMakeRect(0,0,300,120))
        view.wantsLayer = true
        view.layer?.borderWidth = 0
        self.view = view

        let text = NSTextField(frame: NSRect(x: 20, y: 45, width: 260, height: 20))
        text.drawsBackground = true
        text.isBordered = false
        text.backgroundColor = NSColor.controlColor
        text.isEditable = false
        self.view.addSubview(text)
        text.stringValue = "Progress Text"

        let indicator = NSProgressIndicator(frame: NSRect(x: 20, y: 20, width: 260, height: 20))
        indicator.minValue = 0.0
        indicator.maxValue = 100.0
        indicator.doubleValue = 33.0
        self.view.addSubview(indicator)
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是指标始终显示为满。我错过了一个技巧吗?

macos nsprogressindicator swift

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