Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 上传高分-如何使其仅对朋友可见?_Ios_Xcode - Fatal编程技术网

Ios 上传高分-如何使其仅对朋友可见?

Ios 上传高分-如何使其仅对朋友可见?,ios,xcode,Ios,Xcode,我想知道,当你们上传你们的高分时,你们是否有可能和你们的一个朋友比较你们的分数(若更简单,只选择联系人)? 如果是这样的话,有没有人能给我指出正确的方向,怎么做?我在谷歌上找不到任何有用的东西。 据我所知,这应该是可能的,因为像WhatsApp这样的应用程序也可以让你选择想要发送信息的特定联系人。 与此相关:我可以使用云来上传highscore吗?还是应该使用我的Web空间?我没有针对iOS/etc回答这个问题 您通常会在您的应用程序与之通信的网站上公开一个(或POX/POJSON——纯旧XML

我想知道,当你们上传你们的高分时,你们是否有可能和你们的一个朋友比较你们的分数(若更简单,只选择联系人)? 如果是这样的话,有没有人能给我指出正确的方向,怎么做?我在谷歌上找不到任何有用的东西。 据我所知,这应该是可能的,因为像WhatsApp这样的应用程序也可以让你选择想要发送信息的特定联系人。 与此相关:我可以使用云来上传highscore吗?还是应该使用我的Web空间?

我没有针对iOS/etc回答这个问题

您通常会在您的应用程序与之通信的网站上公开一个(或POX/POJSON——纯旧XML或纯旧JSON)服务,它将负责协商友谊、上传高分和检索高分。这可能会击中您控制下的数据库,也可能会连接到云服务器;这两种方法都没有问题(如果您想应用我的SQL概念,Azure是一个不错的选择)

在您的数据库中,您将维护一个朋友列表-这是一个非常简单的结构设置。实际上,您需要两个如下所示的表:

CREATE TABLE [UserAccount]
(
  [ID] BIGINT IDENTITY(1,1) PRIMARY KEY,
  [Name] NVARCHAR(255),
)

CREATE TABLE [Friendship]
(
  [User1] BIGINT, -- Primary key, FK to [UserAccount].[ID]
  [User2] BIGINT, -- Primary key, FK to [UserAccount].[ID]
)
这将允许您通过以下方式表示友谊:

User: ID = 1, Name = Joe
User: ID = 2, Name = Fred
Friendship: User1 = 1, User2 = 2
Friendship: User1 = 2, User1 = 1
然后,您可以使用以下查询查询朋友:

SELECT [F1].[User2] AS [ID] FROM [Friendship] AS [F1]
 WHERE [F1].[User1] = @CurrentUser
   -- Check for symmetric relationship.
   AND EXISTS
       ( SELECT 1 FROM [Friendship] AS [F2]
          WHERE [F2].[User2] = [F1].[User1] AND [F2].[User1] = [F1].[User2] );
如果您的SQL变体支持TVF(表值函数),则可以将其设置为TVF(表值函数)。接下来,您将创建一个高分表和一个将其映射到用户的表

 CREATE TABLE [Highscore]
 {
   [ID] BIGINT IDENTITY(1,1) PRIMARY KEY,
   [Score] INT,
 }

 CREATE TABLE [UserHighscore]
 {
   [UserID] BIGINT, -- Primary key, FK to User.ID
   [HighscoreID] BIGINT, -- Primary key, FK to Highscore.ID
 }
这方面的一些示例数据如下:

 -- In this game you can only score over 9000!
 Highscore: ID = 1, Score = 9001
 Highscore: ID = 2, Score = 9005
 Highscore: ID = 3, Score = 9008
 UserHighscore: UserID = 1, HighscoreID = 1
 UserHighscore: UserID = 1, HighscoreID = 2
 UserHighscore: UserID = 2, HighscoreID = 3
然后,您可以查询朋友的高分:

SELECT TOP(10) [U].[Name], [H].[Score] FROM [Friendship] AS [F1]
 LEFT INNER JOIN [User] AS [U] ON [U].[ID] = [F1].[User2]
 LEFT INNER JOIN [HighscoreUser] AS [HU] ON [HU].[UserID] = [F1].[User2]
 LEFT INNER JOIN [Highscore] AS [H] ON [H].[ID] = [HU].[UserID]
 WHERE [F1].[User1] = @CurrentUser
   -- Check for symmetric relationship.
   AND EXISTS
       ( SELECT 1 FROM [Friendship] AS [F2]
          WHERE [F2].[User2] = [F1].[User1] AND [F2].[User1] = [F1].[User2] )
 ORDER BY [H].[Score] DESC;

该查询将给出你朋友的前10分;给你他们的名字和分数。

谢谢你的快速回答,我一定会调查的。但出于好奇:当用户从其联系人中添加联系人时,这种方法是否有效?@Blade这实际上取决于您的应用程序。您需要了解如何访问用户的电话簿;然后在数据库中查找它们并自动建立关系(显然你首先需要他们的电话号码)-这可能正是WhatsApp的工作原理。然后非常感谢。幸好现在是周末,我有足够的时间