我真的很喜欢 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) 我正在从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
我正在尝试创建一些闭包定义,我将在我的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) 我通过Testflight在朋友的iPad上安装了我的应用程序.安装正常,甚至更新都正确转发.
今天他第一次启动了应用程序.我检查应用程序的收据是否正确,作为以后的In App Purchase(IAP)的先决条件.
如果设备上的收据不正确,我会触发刷新 - Apple会像往常一样要求提供iStore ID密码.但我收到错误而不是收据The operation couldn't be completed. (SSErrorDomain error 100.)
这是一些Testflight"功能"吗?
直接从XCode部署到我的iPhone,一切都完美无瑕.
提前感谢您的想法.
更新:我使用Apple TestFlight并且能够自己尝试.在设备上安装后,刷新收据会引发错误.我可以在没有问题的情况下进行应用内购买,我得到的收据是正确的,错误消失了.但是一旦我触发另一次刷新收据,即使完成了IAP,错误也会再次出现......
我的第一款应用内购买应用刚刚在应用商店发布.买方收到一封电子邮件作为购买收据,其中包含订单ID.但我无法在iTunes Connect网站上找到订单ID - 或每次销售的任何列表.
我查看了用户指南,但其中没有订单ID.
我错过了什么吗?有没有办法检查一个人是否声称他/她已经购买了应用内功能?除了订单ID之外的其他东西可能吗?
我在Google电子钱包商家帐户中有Android应用程序版本的订单ID列表.希望Apple有类似的东西.
谢谢你的帮助.
关于问题从调用方法获取参数名称和查找传递给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) 我刚刚使用转换器将我的 Xcode v6、Swift 1、iOS 7.1 应用程序更新为 Xcode 7 和 Swift 2.0,并进行了一些手动更改以消除与 swift 文件相关的所有构建错误。linker command failed with exit code 1但在解决所有问题后我仍然得到一个...
我已经尝试了在网上可以找到的所有解决方案,包括:
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) 我在运行iOS9的设备上的Swift 1(Xcode 6,iOS 7.1)应用程序中存在UI问题.我试图将我的应用程序转换为Xcode 7和Swift 2.0,但我在这里遇到了很多问题.
为了给我的客户一个快速修复,直到我弄清楚什么是错的,我想知道我是否可以下载并安装Xcode 6(我上次构建和上传应用程序的版本)纠正UI问题(我知道该怎么做)和再次上传应用.
简而言之:Apple会拒绝使用旧的Xcode/Swift版本更新应用程序吗?