刚刚看到UIDevice uniqueIdentifier属性在iOS 5中已弃用,在iOS 7及更高版本中不可用.似乎没有替代方法或财产可用或即将出现.
我们的许多现有应用程序都严格依赖此属性来唯一标识特定设备.我们如何处理这个问题呢?
2011 - 2012年文件中的建议是:
特别注意事项
不要使用uniqueIdentifier属性.要创建特定于应用程序的唯一标识符,可以调用该
CFUUIDCreate函数创建一个UUID,并使用NSUserDefaults该类将其写入默认数据库.
但是,如果用户卸载并重新安装应用程序,则此值将不同.
我正在使用的服务API具有给定的GET方法,该方法要求在请求的主体中发送数据.
正文中所需的数据是由hypen分隔的id列表,可能非常大,因此必须在正文中发送,否则它可能会在浏览器/代理/ web服务器等链中的某处发生.注意我无法控制服务或API,因此请不要提出更改建议.
我正在使用以下jQuery代码但是在fiddler中观察请求/响应我可以看到我发送的"数据"总是被转换并附加到查询字符串,尽管我将"processData"选项设置为false ...
$.ajax({
url: "htttp://api.com/entity/list($body)",
type: "GET",
data: "id1-id2-id3",
contentType: "text/plain",
dataType: "json",
processData: false, // avoid the data being parsed to query string params
success: onSuccess,
error: onError
});
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何强制在请求正文中发送"数据"值?任何帮助表示赞赏,提前谢谢.
看起来Apple已经改变了主屏幕/独立网络应用在iOS 6中的工作方式.根据各种博客文章(示例),这些应用现在可以获得自己的专用空间来存储缓存文件,sqllite dbs,本地存储等,而不是像以前一样与Safari浏览器共享.
在iOS 6开发之前,我曾经虔诚地通过以下程序来清除缓存......
不幸的是,现在Apple已经移动了目标帖子,这个程序似乎不起作用.清除之后,即使我的更改在Safari中被选中,当我添加到主屏幕并启动应用程序时,旧的HTML,JS等仍然被选中.
有谁知道如何可靠地完全清除iOS 6中的缓存?
我正在使用Interface Builder 为iPad应用程序设计自定义UITableViewCell .
我有一个专用的XIB文件,它有一个UITableViewCell作为其根视图.我能够将UITableViewCell的宽度更改为1024(在XCode的右侧属性窗格中的"大小"检查器中),并且此操作会暂时调整画布上的单元格大小.
但是,如果之后我尝试移动/调整UITableViewCell中的某些项目或关闭并重新打开XIB,XCode决定将UITableViewCell的宽度重置为320(iPhone特定宽度).
然后,画布上的单元格会遮挡单元格中的项目,并且除非我再次调整单元格大小,否则无法设计单元格.一旦你绕过这个循环几次就会变得相当烦人.
任何人都知道如何设置宽度以使其永久或者如何指定UITableViewCell是否特定于iPad?
要重新创造......
设备系列== iPad
将新的UITableViewCell拖到画布上(尽管先前选择了iPad,但创建宽度为320)
编辑:
我刚刚收到苹果公司对我很久以前创建的雷达车票的以下回应......
你好奥利弗,
这是关于Bug ID#13222753的后续行动.
工程部门已要求提供以下信息,以便进一步调查此问题:
我们相信这个问题已在最新的Xcode 5.1 Seed中得到解决.
这是适用于Mac,iPhone和iPad的Xcode开发人员工具集的预发布版本.它包括Xcode IDE,iOS模拟器以及用于构建OS X和iOS应用程序的所有必需工具和框架.请使用此版本进行测试,并使用结果更新错误报告.
Xcode 5.1 Seed - Build 5B71f发布日期:2013年12月13日
我还试图在Xcode 5.0.2中重新创建问题,看起来它也与该版本一起修复了.
当我尝试向我的项目添加新的 Swift 包时遇到问题。
在 Xcode 11.3.1 上,我收到“无法与帮助应用程序通信”。错误信息。
PS 在 Xcode 11.4 中,错误消息已更改为“与服务的通信中断”。
查看控制台应用程序后,我可以看到com.apple.dt.Xcode.sourcecontrol.Git发生了崩溃。我已经在这里上传了崩溃报告...
https://gist.github.com/OliverPearmain/0320f34d6381d1bb7900ff266fc8d703
我希望单元测试仅在给定版本的 iOS 或更高版本上运行,但该@available属性似乎根本不适用于 XCTest 方法:-(
例如,我根本无法使用@available关键字的任何变体来禁用测试。无论@available是在类或函数、用途unavailable或任何东西上定义,测试始终执行。例如...
// Still runs on iOS
@available(iOS, unavailable)
class SomeTests: XCTestCase {
func testSomething() {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
Run Code Online (Sandbox Code Playgroud)
// Still runs on iOS
class SomeTests: XCTestCase {
@available(iOS, unavailable)
func testSomething() {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的方法实现我想要的,但这对于很多测试来说并不实用,容易出错,在运行时确定,并且测试方法仍然执行并显示为成功(事实并非如此)。
class SomeTests: XCTestCase {
func testSomething() {
if #available(iOS 10.0, *) {
print("operatingSystemVersion=\(ProcessInfo.processInfo.operatingSystemVersion)")
XCTFail()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为预处理器宏没有#if os(...)帮助,因为它不能进行版本检查。
有没有其他方法可以实现我想要的?我做错了什么@available(或者这可能只是一个错误)?
我需要从RESTful WCF服务中使用来访问HttpContext.Current.我知道我可以通过在config中添加以下内容来实现这一目的:
<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” />
Run Code Online (Sandbox Code Playgroud)
并在我的服务上使用以下属性:
[AspNetCompatibilityRequirements(RequirementsMode
= AspNetCompatibilityRequirementsMode.Required)]
Run Code Online (Sandbox Code Playgroud)
这是我的问题,我需要在代码中"旋转"一个服务实例进行单元测试,因此我不能使用配置文件来指定服务bebaviours等.目前我的代码看起来如下,但尽管在网上搜索我我一直无法弄清楚如何设置ServiceHostingEnvironment类并在不使用配置的情况下将AspNetCompatibilityEnabled属性设置为true,有人可以帮忙吗?
string serviceUrl = "http://localhost:8082/MyService.svc";
_host = new ServiceHost(typeof(MyService), new Uri[] { new Uri(serviceUrl) });
ServiceEndpoint serviceEndpoint
= _host.AddServiceEndpoint(typeof(IMyService), new WebHttpBinding(), string.Empty);
serviceEndpoint.Behaviors.Add(new WebHttpBehavior());
// Here's where I'm stuck, i need something like...
ServiceHostingEnvironmentSection shes = new ServiceHostingEnvironmentSection();
shes.AspNetCompatibilityEnabled = true;
_host.Add(shes);
_host.Open();
Run Code Online (Sandbox Code Playgroud)
任何帮助都非常感谢,并提前感谢.
今天早上我正在修补XCode 4.5.2,想要制作一个表格视图,我自然地将视频UITableViewDataSource和UITableViewDelegate协议添加到我的视图控制器定义中.
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@end
#import "MyViewController.h"
@implementation MyViewController
@end
Run Code Online (Sandbox Code Playgroud)
现在我知道在这个阶段我需要实现协议的@required方法UITableViewDataSource但是出于(可能是TDD)的习惯我决定首先执行构建,期望编译器会抛出关于未实现的@required方法的警告(指示给我哪些要实施).
但是没有编译完成没有编译器的单一错误或警告,这让我感到困惑和担忧.
所以我意识到这个问题通常是反过来的,即"为什么我得到这个警告",而不是"为什么我没有得到这个警告",但这个非常简单的问题让我很困惑.显然,我做错了什么,但我不知道是什么.任何想法如何可能?
仅供参考这是一个新项目,在全新的Mac Book上全新的XCode 4.5.2安装上没有构建/项目设置自定义.
在 VSCode 中调试一些 python 代码时,我希望开发人员能够创建一个简单的小代码envFile,看起来像......
AD_USR=username
AD_PSW=password
Run Code Online (Sandbox Code Playgroud)
因此这些值稍后可以替换为多个其他环境变量。
我尝试执行如下操作(请注意变量如何env尝试使用在 中设置的环境变量envFile)。
这是行不通的。
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug My Program",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/venv/bin/thingtorun",
"console": "integratedTerminal",
"envFile": "${workspaceFolder}/bin/.envFile",
"env": {
"SYSTEM_A_USER": "${env.AD_USR}",
"SYSTEM_A_PASSWORD": "${env.AD_PSW}",
"SYSTEM_B_USER": "${env.AD_USR}",
"SYSTEM_B_PASSWORD": "${env.AD_PSW}",
... + lots of other systems ...
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的机制?
我的主要目标是避免新开发人员必须envFile为每个系统创建大量重复的用户名和密码。在产品中,用户名和密码会有所不同,因此我也无法消除对 SYSTEM_X_USER/PASSWORD 的需要。