标签: core-services

尝试使用Twitter ACAccount时出现奇怪的行为

我一直在使用新的Social.Framework,特别是SLRequest,它们都可以在iOS 6及更高版本上使用.事实上,我在尝试发布此类请求时遇到的崩溃让我感到非常惊讶.

我一直在使用Facebook和Twitter帐户崩溃,这就是为什么我知道它与其中一个特定问题无关.它必须与ACAccount对象相关,我以这种方式得到它:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
    //iOS 6
    if (_twitterEnabled) {
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
            //Set up account
            [accountStore requestAccessToAccountsWithType:accountTypeTwitter options:nil completion:^(BOOL granted, NSError *error) {
                if (granted && !error) {
                    //Get account and get ready to post.
                    NSArray *arrayOfAccounts = [accountStore accountsWithAccountType:accountTypeTwitter];
                    if ([arrayOfAccounts count] > 0) {
                        _twitterAccount = [arrayOfAccounts lastObject];
                    }
                }
            }];
        }
    }
    if (!_facebookEnabled) {
        ACAccountType *accountTypeFacebook = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
            NSArray *permissions = @[@"user_about_me",@"user_likes",@"email"];
            NSMutableDictionary *options = [NSMutableDictionary dictionaryWithObjectsAndKeys:kFacebookAppIDString, ACFacebookAppIdKey, …
Run Code Online (Sandbox Code Playgroud)

iphone core-services ios ios6 social-framework

19
推荐指数
3
解决办法
5506
查看次数

给定UTI(统一类型标识符),找到它符合的所有类型

我正在编写一个使用统一类型标识符的应用程序.具体来说,我正在调用UTTypeCreateAllIdentifiersForTag()并传递各种MIME类型.

我希望这个功能(不同于UTTypeCreatePreferredIdentifierForTag())将给我最具体的UTI以及它所符合的所有UTI.这似乎不是这种情况 - 它要么返回单个UTI,要么辅助UTI是虚假的.

UTTypeConformsTo()在同一个头文件中定义了函数,但我更喜欢一个返回此UTI符合的所有类型的数组的函数.

对我来说似乎有希望,因为这MDItemCopyAttributeList()将返回这样的清单.也就是说,它需要一个MDItemRef,可以从文件路径或URL创建 - 这不是很好.有时我的数据只存储在内存中,我只有一个MIME类型.

我是否必须遍历UTI的整个数据库以获取此信息,或者我是否遗漏了某些内容?

macos uti core-services launch-services

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

Tridion核心服务如何下载多媒体组件的二进制文件

我有一个要求,我需要下载多媒体组件的二进制文件,但当我访问BinaryContentData类暴露的属性时,没有属性下载图像文件.虽然对于上传文件,Core Service也有一个属性UploadFromFile.

那么有没有办法将二进制文件下载到临时位置.以下是我使用的代码:

core_service.ServiceReference1.SessionAwareCoreService2010Client client = new SessionAwareCoreService2010Client(); 
client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName"; 
client.ClientCredentials.Windows.ClientCredential.Password = "myPassword"; client.Open();
ComponentData component = (ComponentData)client.TryCheckOut(
                            multimediaComponentURI, new ReadOptions());
BinaryContentData binaryData =   component.BinaryContent;
Run Code Online (Sandbox Code Playgroud)

请建议.

core-services tridion tridion-2011

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

为什么我不能取消CFHost Info Resolution?

AFAIK CFHost提供OS X(和iOS)上唯一的用于DNS解析的公共API,它是异步和/或可以取消(因此可以实现自定义超时).所有其他API都是同步的,无法取消,因此每次DNS查询都需要浪费一个线程才能使操作异步或停止运行(即使是Grand Central Dispatch也会在每个查询中浪费一个线程,您只需创建线程即可你自己).每个DNS解析调用有一个阻塞线程(并且这样的调用可以阻塞相当长的时间,在我的系统上,超时是在调用最终超时前30秒),如果你需要解析大量的DNS,真的不是一种方法主机名.

CFHost对我来说似乎是一个很好的工作.它可以同步使用,在这种情况下文档说阻塞请求可以从另一个线程取消,它可以异步使用,在这种情况下请求在后台运行,如果需要也可以取消,但它在成功或自然超时之前不会阻止任何线程.内部CFHost使用getaddrinfo_async_*函数,但这不是公共API,据我所知,这些函数是私有的,不应该直接使用它们.

所以这里有一段简单的代码我CFHost用cancel 来测试查找,但它没有按预期工作,我不明白为什么.

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <dispatch/dispatch.h>
#include <CoreServices/CoreServices.h>

int main (int argc, char ** argv ) {
    CFHostRef host;
    dispatch_time_t timeout;
    CFAbsoluteTime startTime;
    dispatch_queue_t timeoutQueue;

    startTime = CFAbsoluteTimeGetCurrent();

    host = CFHostCreateWithName(kCFAllocatorDefault, CFSTR("www.apple.com"));
    assert(host);

    timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * 1000 * 1000 * 1000ull);
    timeoutQueue = dispatch_get_global_queue(
        DISPATCH_QUEUE_PRIORITY_DEFAULT, 0
    );
    assert(timeoutQueue);

    dispatch_after(timeout, timeoutQueue,
        ^{
            printf("%u: Timeout limit reached, canceling.\n", …
Run Code Online (Sandbox Code Playgroud)

macos network-programming core-services

6
推荐指数
0
解决办法
556
查看次数

如何使用UCKeyTranslate

给定一个没有修饰符的键的键代码,我想产生按shift +键的结果.示例:对于标准美国键盘,<shift> + <period>给出>.

相关的功能是UCKeytranslate,但我需要一些帮助来获得正确的细节.下面的代码片段是一个完整的程序,可以在XCode中运行.该程序的目的是给出<period>来产生字符>.

该计划的结果是:

Keyboard: <TSMInputSource 0x10051a930> KB Layout: U.S. (id=0)
Layout: 0x0000000102802000
Status: -50
UnicodeString: 97
String: a
Done
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

获得布局的部分似乎正在工作,但状态代码显示出现了问题.但是什么?

import Foundation
import Cocoa
import Carbon
import AppKit

// The current text input source (read keyboard) has a layout in which
// we can lookup how key-codes are resolved.

// Get the a reference keyboard using the current layout.
var unmanagedKeyboard = TISCopyCurrentKeyboardLayoutInputSource()
var keyboard = unmanagedKeyboard.takeUnretainedValue() as TISInputSource
print("Keyboard: ") …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c core-services swift

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

如何将符号链接移动到垃圾箱?

我没有看到FSPathMoveObjectToTrashSync()没有关注链接的功能选项.

这是我尝试过的

创建链接和文件

[ 21:32:41 /tmp ] $ touch my_file
[ 21:32:45 /tmp ] $ ln -s my_file my_link
[ 21:32:52 /tmp ] $ la
total 8
drwxrwxrwt   12 root     wheel   408 17 Maj 21:32 .
drwxr-xr-x@   6 root     wheel   204  9 Sep  2009 ..
-rw-r--r--    1 neoneye  wheel     0 17 Maj 21:32 my_file
lrwxr-xr-x    1 neoneye  wheel     7 17 Maj 21:32 my_link -> my_file
Run Code Online (Sandbox Code Playgroud)

将链接移动到垃圾箱

OSStatus status = FSPathMoveObjectToTrashSync(
    "/tmp/my_link",
    NULL,
    kFSFileOperationDefaultOptions
);
NSLog(@"status: %i", (int)status);
Run Code Online (Sandbox Code Playgroud)

输出是 …

cocoa symlink recycle-bin core-services

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

FSGetVolumeInfo是NSWorkspace不推荐使用的installedLocalVolumePaths方法的推荐替代方法吗?

我需要在Mac OS X上获取已安装本地卷的列表.以前,Cocoa类NSWorkspace有一个获取此类卷的挂载点数组的mountedLocalVolumePaths方法.从Lion开始,现在已经弃用了这个,在文档中没有提示我们应该使用什么.

我发现提供此信息的唯一其他Apple特定API是CoreServices.framework中的FSGetVolumeInfo函数.如果你通过此列举了已安装卷kFSInvalidVolumeRefNum参数和1..1的volumeIndex.它HFSUniStr255通过volumeName输出参数返回卷名(作为a ),通过rootDirectory输出参数返回挂载点作为a FSRef,然后可以使用转换为URL CFURLCreateFromFSRef().

这似乎有点复杂和不必要的低级别.

也存在BSD级的功能,getfsstat()并且getmntinfo()其中两个发射的阵列statfs结构.API似乎比核心服务版本更健全.

我应该使用更高级别的替代品吗?

macos cocoa core-services

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

JXA:从 CoreServices 访问 CFString 常量

JXA具有内置的 ObjC 桥接器,Foundation可通过对象自动从框架公开枚举和常量$;例如:

$.NSUTF8StringEncoding  // -> 4
Run Code Online (Sandbox Code Playgroud)

但是,较低级别 API 中也有一些CFString不会自动导入的有用常量,即定义常用UTIkUTType*值的常量,例如UTI 。CoreServiceskUTTypeHTML"public.html"

虽然您可以使用 导入它们ObjC.import('CoreServices'),但它们的字符串值无法(轻松)访问,大概是因为它的类型是CFString[Ref]

ObjC.import('CoreServices') // import kUTType* constants; ObjC.import('Cocoa') works too
$.kUTTypeHTML  // returns an [object Ref] instance - how do you get its string value?
Run Code Online (Sandbox Code Playgroud)

我还没有找到一种方法来获取返回内容的核心 字符串ObjC.unwrap($.kUTTypeHTML):不起作用,也不起作用ObjC.unwrap($.kUTTypeHTML[0])(也.deepUnwrap())。

我想知道:

  • 如果我缺少一种本机 JXA 方法来执行此操作。
  • 否则,如果有办法ObjC.bindFunction()定义可以解决问题的函数的绑定CFString*(),例如 toCFStringGetCString()CFStringGetCStringPtr(),但对我来说如何翻译 ObjC …

objective-c core-services javascript-automation

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

Tridion核心服务:如何将特定版本的TCM URI分配给多媒体链接字段

在为组件的多媒体链接字段分配值时,我想分配特定版本的图像的TCM URI.Tridion内部维护带有后缀"-v"的版本和相应的版本号ex: - 对于多媒体组件的第二版我的TCm URI将是tcm:pubNum-multiMediaCompoUniqueID-v2甚至我可以用这个"-v2"打开多媒体组件后缀URI通过搜索功能.现在让我说我创建了5个版本的多媒体图像和大约5个版本的组件,对于每个版本的组件我试图将"-v"后缀URI分配给组件的多媒体链接字段然后我得到了以下错误: -

"在URI中找到了预期的版本:tcm:pubNum-compoUniqueID."

和我的组件的xml如下: -

<imageField xmlns="uuid:e65ab5b8-babe-4146-a8e4-9b6fda694ea1" xlink:type="simple" xlink:href="tcm:pubNum-multiMediaCompoUniqueID-v1" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title="HTML.zip"></imageField>
Run Code Online (Sandbox Code Playgroud)

如果我尝试手动分配这个错误,我也会得到同样的错误,我也试图逃避双引号并且在拍摄时遇到了一些麻烦.

所以我的简单定义是,如果Tridion维护多媒体组件的所有版本,那么为什么它不允许我们分配该多媒体组件的先前/特定版本TCm URI.因为我正在为客户端做一个自动化过程,这可能是一个特殊的要求,但我的客户想要查看每个版本的组件,哪个版本的图像被分配(多媒体组件的文件扩展可能存在差异)和不是最近的一个.这可能吗?

core-services tridion tridion-2011

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

从命令行使用Archive Utility.app(或使用applescript)

我想在我正在编写的应用程序中使用Archive Utility.app来压缩一个或多个文件.

做(从命令行):

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility file_to_zip
Run Code Online (Sandbox Code Playgroud)

是否有效,但它创建了一个cpgz文件,我可以忍受(尽管.zip会更好)但主要问题是我无法将2个文件压缩成1个档案:

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility ~/foo/a.txt ~/bar/b.txt
Run Code Online (Sandbox Code Playgroud)

上面的命令将创建2个档案(〜/ foo/a.txt.cpgz和〜/ bar/b.txt.cpgz).

我不能让它做我想做的事:

open -a /System/Library/CoreServices/Archive\ Utility.app --args xxxx
Run Code Online (Sandbox Code Playgroud)

我宁愿不使用zip命令,因为要压缩的文件相当大,所以内置进度条很好.

或者,我可以通过编程方式使用Archive Utility吗?

谢谢.

compression cocoa applescript objective-c core-services

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

在 C++ 中使用 CGImageDestinationCreateWithURL 创建 CGImageDestinationRef 返回 NULL

我试图使用某些 OSX 框架中可用的方法为我的 macOS 10.13 设置的每个显示器截取屏幕截图,但使用某些 OSX 框架中的方法会返回CGImageDestinationCreateWithURL,我不知道我做错了什么。CGImageDestinationRefNULL

我认为我遇到的问题在于该行:

CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypePNG, 1, NULL);
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码如下:

主要.cpp:

#include <iostream>
#include <string>
#include <QuartzCore/QuartzCore.h>
#include <CoreServices/CoreServices.h>
#include <ImageIO/ImageIO.h>

int main(int argc, const char * argv[]) {
    std::string baseImageOutput = "/Users/bogdan/Desktop";
    std::string pathSeparator = "/";
    std::string baseImageName = "image-";
    std::string imageExtension = ".png";

    CGDisplayCount displayCount;
    CGDirectDisplayID displays[32];

    // grab the active displays
    CGGetActiveDisplayList(32, displays, &displayCount);

    // go through the list
    for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c++ macos core-services quartz-core

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

如何为日期或数字类型的元数据字段赋值?

我使用以下链接的代码来处理元数据字段: -

https://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata

但是当我尝试为日期类型的元数据字段赋值时,我得到以下xml验证错误: -

"System.ServiceModel.FaultException`1 [myPorject.serviceReference.CoreServiceFault]:XML验证错误.原因:'uuid:myUUID:dateField'元素无效 - 值'10/4/2012 03:04:00 AM'是根据其数据类型'http://www.w3.org/2001/XMLSchema:dateTime'无效 - 字符串'10/4/2012 03:04:00 AM'不是有效的DateTime值..(故障详细信息是等于myPorject.serviceReference.CoreServiceFault)"

无论我将值分配为字符串还是DateTime数据类型我都得到相同的错误,我还尝试使用Datetime数据类型重载AddValue方法,但到目前为止还没有任何工作.

AddValue方法的代码片段: -

     public void AddValue(string value1)
    {
        string value = string.IsNullOrEmpty(value1) ? null : value1; ;
        XmlElement newElement = fields.AddFieldElement(definition);
        if (value != null) newElement.InnerText = value;
    }
Run Code Online (Sandbox Code Playgroud)

请为Date和Number数据类型建议解决方案.提前致谢

core-services tridion tridion-2011

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