使用Asset和Location字段

CloudKit提供专门用于存储大型数据文件和按位置获取记录的字段类型。使用这些数据类型可以利用CloudKit为此类数据提供的性能改进。您还可以按位置获取记录。例如,在用户定义的区域中的地图上显示记录。

在CloudKit中存储大文件

您可以使用Asset字段类型在CloudKit中存储大型数据文件。Asset由关联记录拥有,CloudKit为您处理垃圾回收。CloudKit还可以有效地上传和下载Asset

在代码中,Asset字段类型由CKAssetarrow-up-right对象表示。此代码片段将记录中的Asset字段设置Artwork为资源文件。

   // Create a URL to the local file
   NSURL *resourceURL = [NSURL fileURLWithPath:@""];
   if (resourceURL){
      CKAsset *asset = [[CKAsset alloc] initWithFileURL:resourceURL];
      artworkRecord[@"image"] = asset;
   }

保存记录后,文件将上载到iCloud。

添加类似的代码,将带有Asset字段的记录类型保存到您的应用程序并运行它。要保存记录,请阅读维护CloudKit记录的本地缓存arrow-up-right

验证您的步骤

要验证您对架构和记录的更改是否已保存到iCloud,请阅读“常规工作流程”arrow-up-right 和“ 获取更改”arrow-up-right。当您使用Asset对象查看记录时,CloudKit仪表板会显示二进制数据的大小。../Art/ViewAsset.shot/Resources/shot_2x.png

添加位置字段

如果您的记录具有地址或其他位置数据,则可以将其保存为CLLocationarrow-up-right记录中的对象,然后按位置获取记录。例如,您的应用可能会显示代表地图上记录的图钉。

此代码片段使用CLGeocoderarrow-up-right该类将字符串地址转换为位置对象并将其存储在记录中。

添加类似的代码,将带有Location字段的记录类型保存到您的应用程序并运行它。要保存记录,请阅读维护CloudKit记录的本地缓存arrow-up-right

验证您的步骤

在CloudKit仪表板中查看记录时,它会显示位置字段的经度和纬度。

../Art/ViewLocation.shot/Resources/shot_2x.png

按位置获取记录

在数据库中有位置数据后,可以使用包含记录类型,谓词和排序描述符的查询按位置获取记录。Location必须为谓词中指定的字段建立索引才能使提取成功。

此代码片段提取位于旧金山100,000米范围内的所有记录。

在此iOS应用程序中,将获取固定位置指定半径内的图稿。

../Art/6_fetching_by_location_2x.png

要了解有关位置和地图的更多信息,请阅读位置和地图编程指南arrow-up-right

概括

在本章中,您学习了如何:

  • 添加Asset添加一个类型的记录类型CKAsset字段,记录和保存记录

  • Location使用CLLocation对象将类型添加到记录类型

  • 按位置获取对象

Last updated