小编Sok*_*oko的帖子

C#8 接口默认值:如何以良好且可用的方式实现默认属性

我真的很喜欢 C#8 中接口默认实现的想法。但尝试之后却大失所望……

所以这是一个简单的例子,我在 C#8 接口中找到了部分答案,其中定义了属性/方法 - 显然已经不起作用,原因是:

public interface IHasFirstNames
{
    string? FirstName => FirstNames.FirstOrDefault();

    List<string> FirstNames { get; }
}

public class Monster : IHasFirstNames
{
    public List<string> FirstNames { get; } = new();

    public Monster(params string[] firstNames)
    {
        FirstNames.AddRange(firstNames);
    }
}

public static class Program
{
    public static void Main()
    {
        var sally = new Monster("James", "Patrick");

        var error = sally.FirstName; // Cannot resolve symbol FirstName
        var works = ((IHasFirstNames)sally).FirstName;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果你总是不得不把它改得丑陋,那么在接口中拥有属性的默认实现有什么意义呢?

所以根据上面的铸造解决方案我尝试过:

public …
Run Code Online (Sandbox Code Playgroud)

c# interface c#-8.0 default-interface-member

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

在swift for iOS中用普通(Android格式)文本创建一个属性字符串

我正在从Localizable.strings中读取字符串,其中包含类似于Android应用程序的strings.xml中的内容.

"testShort" = "A <b>short</b>\ntest with another<b>bold text</b>";
Run Code Online (Sandbox Code Playgroud)

粗体和换行是我文本中唯一的两个格式属性.我试图开发这样的方法几天没有成功:

func ConvertText(inputText: String) -> NSAttributedString {
    // here comes the conversion to a representation with Helvetica 14pt and Helvetica-Bold 14pt including line feeds.
}
Run Code Online (Sandbox Code Playgroud)

我的最终目标是在UITextView的attributedText中显示文本.

在不知道Objective-C的情况下成为Swift和iOS的新手我发现很难做String操作,因为它们非常不同且复杂,所有示例都在Objective-C中.更令人困难的是,大多数API方法在Swift中不可用或与Objective-C不同......

这是我到目前为止尝试的方法体,这里有很多其他帖子:

var test = inputText.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!
attrStr = NSAttributedString(
        data: test,
        options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
        documentAttributes: nil,
        error: nil)!
return attrStr
Run Code Online (Sandbox Code Playgroud)

这里的主要问题\n是没有转换,字体非常小而且不同.

接下来,我尝试手动加粗文本的一部分.它看起来像那样:

var newText = NSMutableAttributedString(string: inputText)
newText.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica-Bold", size: 14.0)!, range: NSRange(location:2,length:4))
Run Code Online (Sandbox Code Playgroud)

现在我尝试在文本中搜索属性,删除它们并使用类似的addAttribute

// Start of bold text
var …
Run Code Online (Sandbox Code Playgroud)

xcode nsattributedstring ios nsmutableattributedstring swift

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

Swift:重用闭包定义(带类型)

我正在尝试创建一些闭包定义,我将在我的iOS应用程序中使用很多.所以我想使用一个类型,因为它似乎是最有希望的......

我做了一个小型的Playground示例,详细说明了我的问题

// Here are two tries for the Closure I need
typealias AnonymousCheck = (Int) -> Bool
typealias NamedCheck = (number: Int) -> Bool

// This works fine
var var1: AnonymousCheck = {
    return $0 > 0
}
var1(-2)
var1(3343)

// This works fine
var var2: NamedCheck = {
    return $0 > 0
}
var2(number: -2)
var2(number: 12)

// But I want to use the typealias mainly as function parameter!
// So:

// Use typealias as function parameter
func …
Run Code Online (Sandbox Code Playgroud)

closures type-alias swift

7
推荐指数
2
解决办法
8759
查看次数

通过testflight的iOS应用程序在收据刷新期间返回SSErrorDomain错误100

我通过Testflight在朋友的iPad上安装了我的应用程序.安装正常,甚至更新都正确转发.

今天他第一次启动了应用程序.我检查应用程序的收据是否正确,作为以后的In App Purchase(IAP)的先决条件.

如果设备上的收据不正确,我会触发刷新 - Apple会像往常一样要求提供iStore ID密码.但我收到错误而不是收据The operation couldn't be completed. (SSErrorDomain error 100.)

这是一些Testflight"功能"吗?

直接从XCode部署到我的iPhone,一切都完美无瑕.

提前感谢您的想法.

更新:我使用Apple TestFlight并且能够自己尝试.在设备上安装后,刷新收据会引发错误.我可以在没有问题的情况下进行应用内购买,我得到的收据是正确的,错误消失了.但是一旦我触发另一次刷新收据,即使完成了IAP,错误也会再次出现......

in-app-purchase ios receipt testflight

7
推荐指数
0
解决办法
1306
查看次数

获取iTunes Connect报告中的应用内购买(订单ID)列表

我的第一款应用内购买应用刚刚在应用商店发布.买方收到一封电子邮件作为购买收据,其中包含订单ID.但我无法在iTunes Connect网站上找到订单ID - 或每次销售的任何列表.

我查看了用户指南,但其中没有订单ID.

我错过了什么吗?有没有办法检查一个人是否声称他/她已经购买了应用内功能?除了订单ID之外的其他东西可能吗?

我在Google电子钱包商家帐户中有Android应用程序版本的订单ID列表.希望Apple有类似的东西.

谢谢你的帮助.

itunesconnect itunes app-store in-app-purchase

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

获取参数的调用变量名称

关于问题从调用方法获取参数名称查找传递给C#中函数的变量名称,我仍在寻找一种方法来定义WhatDoesTheAnimalSay_WANTED方法:我想知道用作变量的名称一个参数:

public class Farm
{
    public readonly string Cow = "Muuuuhh";

    public string Cat { get; set; }

    public void MainFunction()
    {
        var dog = "WauWau";
        var kiwi = new Bird("QueeeekQueeek");

        Cat = "Miiiaaauuuu";

        // This one works but looks kinda ugly and is cumbersome when used
        WhatDoesTheAnimalSay(nameof(dog), dog);
        WhatDoesTheAnimalSay(nameof(Cow), Cow);
        WhatDoesTheAnimalSay(nameof(Cat), Cat);
        WhatDoesTheAnimalSay(nameof(kiwi), kiwi);

        WhatDoesTheAnimalSay_WRONG1(dog);
        WhatDoesTheAnimalSay_WRONG2(dog);

        WhatDoesTheAnimalSay_WANTED(dog);
        WhatDoesTheAnimalSay_WANTED(Cow);
    }

    public void WhatDoesTheAnimalSay<T>(string name, T says)
    {
        MessageBox.Show("The " + name + " …
Run Code Online (Sandbox Code Playgroud)

.net c# ixmlserializable nameof

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

Xcode 7、Swift 2.0 转换:“重复符号”和链接器命令失败,退出代码 1

我刚刚使用转换器将我的 Xcode v6、Swift 1、iOS 7.1 应用程序更新为 Xcode 7 和 Swift 2.0,并进行了一些手动更改以消除与 swift 文件相关的所有构建错误。linker command failed with exit code 1但在解决所有问题后我仍然得到一个...

我已经尝试了在网上可以找到的所有解决方案,包括:

  • 删除测试变量构建中的主机设置
  • 尝试清理所有文件夹和构建,包括派生数据
  • 尝试将 Bitcode 设置为 NO
  • toolbox-Bridging-Header.h我已经完成的#import <receiptValidationHelper.h>而不是 .m 文件中

以上都没有解决问题。

一些警告后显示的链接错误是:

duplicate symbol _global_bundleIdentifier in:
/Users/soko/Library/Developer/Xcode/DerivedData/toolbox-bpiaqlzxdtrbqwekzouzpbfnqxaa/Build/Intermediates/toolbox.build/Debug-iphonesimulator/toolbox.build/Objects-normal/x86_64/receiptValidationHelper.o
/Users/soko/Library/Developer/Xcode/DerivedData/toolbox-bpiaqlzxdtrbqwekzouzpbfnqxaa/Build/Intermediates/toolbox.build/Debug-iphonesimulator/toolbox.build/Objects-normal/x86_64/SwashTypeController.o
....
ld: 67 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

带有 的代码global_bundleidentifier看起来receiptValidationHelper.h像这样

const NSString *global_bundleVersion = @"1";
const NSString *global_bundleIdentifier …
Run Code Online (Sandbox Code Playgroud)

linker-errors ios xcode7 swift2

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

我是否需要Xcode 7和Swift 2.0来更新我的应用程序

我在运行iOS9的设备上的Swift 1(Xcode 6,iOS 7.1)应用程序中存在UI问题.我试图将我的应用程序转换为Xcode 7和Swift 2.0,但我在这里遇到了很多问题.

为了给我的客户一个快速修复,直到我弄清楚什么是错的,我想知道我是否可以下载并安装Xcode 6(我上次构建和上传应用程序的版本)纠正UI问题(我知道该怎么做)和再次上传应用.

简而言之:Apple会拒绝使用旧的Xcode/Swift版本更新应用程序吗?

xcode legacy-code swift

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