小编SG1*_*SG1的帖子

游戏中心:addRecipientsWithPlayerIDs ......它有什么意义?

您可以使用addRecipientsWithPlayerID作为配置GKFriendRequestComposeViewController的一部分,如Apple的此示例中所示:

- (void) inviteFriends: (NSArray*) identifiers
{
    GKFriendRequestComposeViewController *friendRequestViewController = [[GKFriendRequestComposeViewController alloc] init];
friendRequestViewController.composeViewDelegate = self;
if (identifiers)
{
    [friendRequestViewController addRecipientsWithPlayerIDs: identifiers];
}
[self presentModalViewController: friendRequestViewController animated: YES];
[friendRequestViewController release];
}
Run Code Online (Sandbox Code Playgroud)

我对这整个命题感到困惑.据说,您通过将一些PlayerID传递给请求来邀请朋友.但是你只能从已经是朋友的玩家那里获得玩家ID.因此,您不能邀请人们成为不是朋友的朋友,您只能邀请人们成为已经是朋友的朋友.这种方法有什么意义; 它是如何工作的?

我知道有一个等效的电子邮件地址或只是留空,但我试图了解这种方法的目的是什么.它似乎毫无用处,这意味着我遗漏了一些关于朋友请求如何工作的非常关键的事实.感谢任何建立了这个并且可以解决问题的人.

iphone game-center

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

Objective-C - 更改传入对象指针的地址

假设我有一个方法,如:

- (void)reassignPassedObject:(void *)block;
Run Code Online (Sandbox Code Playgroud)

它被称为

NSLog(@"self 1: %@", self);
[myController reassignPassedObject:^(){return self;}];
NSLog(@"self 2: %@", self);
Run Code Online (Sandbox Code Playgroud)

我想将“self”引用重新分配给另一个对象,如下所示:

- (void)reassignPassedObject:(void *)block {
    id holder = block();

    if ( YES ) {
        id newObject = nil; //or NSString or NSArray
        //do something such that output second log is "self 2: (newObject...)"
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

看起来这应该是公平的游戏,因为我们只是在谈论重新分配指针。我会担心特定实现中的释放/保留。这里让我感到困惑的挑战是:

  • 它涉及 id 而不是直接指针
  • 它涉及一个块传递变量
  • 它涉及必须以某种方式重新分配 block() 中对象的地址,我们只能访问本地持有者对象。

想法?

c pointers objective-c

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

使用NSMetadataQueryUbiquitousDocumentsScope的iCloud查询无法更新

我在两个应用程序(一个iOS,另一个Mac)之间有一个工作设置,它们都将文件放在普遍存储容器中,并使用NSMetadataQuery监视该容器.在大多数情况下,查询几乎在文件设置后立即更新:目录中为YES.

然而,相对于另一个令人讨厌的iCloud错误,它可以导致容器在同步时自动清空(自动,而不是由应用程序或用户),一旦应用程序之间的"干净设置"被所述错误查询破坏 - 在仅限iPhone方面 - 不再更新.

如果我将文件添加到iPhone上的容器中,Mac会立即看到它们.但如果我在Mac端添加文件,iPhone永远不会更新.如果我使用计时器和文件管理器扫描容器,我可以确认文件列在内容中.这是不能识别它们的查询.

虽然我认为这不是代码问题,但我会将其包含在此处.我认为这是一个"iCloud is beta(at best)"问题,我想知道是否有人可以回答这个问题:由于退出并重新启动应用程序确实导致查询更新,有没有人知道如何强制 NSMetadataQuery更新? 删除它并制作另一个没有任何作用.

这是查询代码(我告诉你它正确报告给任何NSNotification监视器):

    self.query = [[[NSMetadataQuery alloc] init] autorelease];
    [query setDelegate:self];
    [query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
    [query setPredicate:[NSPredicate predicateWithFormat:@"%K like[cd] %@", NSMetadataItemFSNameKey, @"*"]];
    [query startQuery];
Run Code Online (Sandbox Code Playgroud)

这是轮询代码(我告诉你它说文件夹中有文件):

 - (void)pollUbiquitousStore:(NSTimer *)aUbiquitousStoreMonitor {
     //Query update
     NSArray *topLevelCloudContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[self.fileController.cloudFolderURL.path stringByAppendingPathComponent:@"Documents"] error:nil];
     NSLog(@"known iCloud url: %@ contents: %@", self.fileController.cloudFolderURL, topLevelCloudContents);
Run Code Online (Sandbox Code Playgroud)

这是我查看查询的地方(一旦系统被清洗,我得到的结果除外):

    //Refresh
    id queryGatheringObserver = [[NSNotificationCenter defaultCenter] addObserverForName:NSMetadataQueryGatheringProgressNotification object:aQuery queue:nil usingBlock:^(NSNotification *note) {
        refresh((NSMetadataQuery *)[note object]);
    }];
    id queryUpdateObserver = [[NSNotificationCenter …
Run Code Online (Sandbox Code Playgroud)

cocoa ios icloud

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

Swift相当于"?:"

ObjC

[MyObject doThisWithString:string?: [MyObject otherString]];
Run Code Online (Sandbox Code Playgroud)

我怎么能在Swift中做到这一点?

extension MyObject {
    func doThisWithString(string: String?) {
        ... <- assume defined
    }

    func otherString() -> String {
        return ... <- assume defined
    }
}

var MyInstance: MyObject
...
MyInstance.doThisWithString(myStringVar?: MyInstance.otherString()) <- how do I do this?
Run Code Online (Sandbox Code Playgroud)

swift

0
推荐指数
1
解决办法
538
查看次数

标签 统计

c ×1

cocoa ×1

game-center ×1

icloud ×1

ios ×1

iphone ×1

objective-c ×1

pointers ×1

swift ×1