自定义类上的 NSData?

2023-12-09

我即将研究 iPhone 上的蓝牙交互。现在,我读到唯一可以传输的对象是 NSData 对象。现在,我想转移我的“角色”对象。这个类看起来像这样:

@interface Character : NSObject <NSCoding>
{
   UIImage *characterImage;
   int health;
   NSString *name;
}

-(void) initWithStats;
-(void) addToViewController: (UIViewController *)theView;

-(void) encodeWithCoder:(NSCoder *)encoder;
-(void) initWithCoder:(NSCoder *)decoder;

@end

现在,我知道我必须遵守 NSCoding 协议并实现这两种方法,但是,我不太确定在这里做什么。我知道我需要以某种方式创建此类的实例,然后在其他设备接收到 NSData 对象时“解压/解档”它们。

因此,非常感谢这里的任何建议:=)我对蓝牙编程非常陌生,以前从未使用过蓝牙编程或 NSData。所以提前致谢:)

/JBJ


听起来你真的只是问如何实施-encodeWithCoder: and -initWithCoder:。这非常简单:

-(void) encodeWithCoder:(NSCoder *)encoder
{
    [encoder encodeObject:characterImage forKey:@"character image"];
    [encoder encodeInt:health forKey:@"health"];
    [encoder encodeObject:name forKey:@"name"];
}

就这样。-initWithCoder:工作方式完全相同,只是您调用补充方法,例如:characterImage = [decoder decodeObjectForKey:@"character image"];.

如果您需要提供特定格式的数据以与不支持存档格式的目标设备一起使用,您可以这样做并使用-encodeBytes:length:forKey:方法来存储您喜欢的任何内容,或者以您自己的格式将数据写入 NSMutableData 对象,然后使用-encodeObject:forKey:关于这一点。您的目标设备可能仍然需要在编码器存储的任何信封中查找您的数据;您可以通过从一系列已知的字节开始来使这变得更容易。我不确定这对于您的情况是否有必要,但请记住这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义类上的 NSData? 的相关文章

  • Google Cardboard - Cardboard VR 套件有 iPhone / iOS 入门项目吗?

    我正在看Google Cardboard 套件 一种廉价的 VR 设置 https developers google com cardboard 使用 Android 设备玩 3d VR 游戏 我看到他们有一个 Android 演示项目
  • 使用自动布局时 UIScrollview 的中心内容

    我在项目中使用自动布局 并且有一个滚动视图 其中有一个居中的按钮 我已经让滚动视图滚动 但不占据整个屏幕 我尝试按照此处的教程进行操作 https developer apple com library ios technotes tn21
  • 如何设置 ABPeoplePickerNavigationController 的提示?

    这是我用来调用人员选择器的代码 但提示标签文本不会更改 ABPeoplePickerNavigationController picker ABPeoplePickerNavigationController alloc init pick
  • Visual Studio 2010 支持 iPhone 开发吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 Windows 开发机为 iPhone 进行开发 https stackoverflow com questions 22358 how can i develop for iphone u
  • iOS 中系统日期更改后如何更改带有日期的标签?

    我有一个简单的查询 但不知道该怎么做 这就是我想要实现的目标 1 我有一个带有今天日期的 UILabel 即 29 04 12 2 在午夜 我希望该标签自行更新为 30 04 12 而无需更改视图或按任何内容 这是第2步 我不知道该怎么做
  • 在 iPhone 上下载、保存和播放 mp3

    我想从某个网站下载 mp3 文件 将其保存到我的 CoreData 模型 AudioMp3 中 然后播放 下面的函数可以工作 但首先 效率低下 因为它必须首先将 mp3 保存到文件 其次 它在接下来的调用次数中重复播放相同的 mp3 我认为
  • 隐藏导航栏和标签栏时,UIView 不会调整为全屏

    我有一个应用程序 它有一个用于正常交互的选项卡栏和导航栏 我的一个屏幕是很大一部分文本 所以我允许用户点击进入全屏 有点像 Photos app 导航栏和标签栏被隐藏 我将文本视图的框架设置为全屏 问题是 标签栏原来所在的位置有大约 50p
  • 是否可以对 UILabel 的文本颜色变化进行动画处理? [复制]

    这个问题在这里已经有答案了 UIView animateWithDuration 5 animations myLabel textColor UIColor redColor 标签文本颜色立即改变 Try this UIView tran
  • iOS5 和 Facebook API

    我想将我的应用程序与 Facebook 集成并从 github 下载 Facebook ios sdk 但是 该 sdk 适用于 Xcode 4 0 代码库 我正在使用 Xcode 4 2 for iOS 5 beta 5 应用程序 是否有
  • 如何使用呼叫目录扩展来识别应用程序中的来电?

    我正在研究callKit框架 我发现通过使用呼叫目录扩展 我们可以识别来电电话号码 我的问题是如何在 iOS 应用程序中实现呼叫目录扩展来识别来电详细信息 我在 Objective C 工作 让一个数 919876xxxxx 使用此方法添加
  • 在两个可移动 uiview 之间画线

    我有一个带有节点的 滚动视图 UIViews 可以拖动 我正在尝试在选定的之间绘制边缘UIViews使用 calayer 但我不知道当视图位置发生变化时如何重新绘制线条 In my viewControllerI 类在节点数组中添加第一个和
  • 增量后清除推送通知徽章

    我正在研究 iPhone 中的推送通知 当我收到推送通知时 它在我的应用程序图标上显示 1 下次显示 2 3 4 如果我打开应用程序 它是 0 下次它应该是 1 2 3 4 但它显示最后一个数字和 1 我想在打开应用程序后重置推送通知徽章
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • Xcode 中的 NSObject 描述和自定义摘要

    我覆盖对象的 NSString description但是 Xcode 总是显示error summary string parsing error在变量视图的摘要字段中 我当前的实现如下 NSString description retu
  • Xcode 服务器 ibtool 构建失败

    我一直在研究使用 Xcode Server 进行 CI 我已经解决了一些问题 但现在有一个问题困扰着我 构建似乎工作正常 但在测试阶段挂起 并在日志底部生成以下内容 2015 11 25 14 44 45 650 xcodebuild 58
  • Cocoa App 中使用#include 编译错误

    我正在尝试在 xcode 4 0 中编译 Cocoa 应用程序 但收到此错误 fatal error string file not found 当尝试在这一行编译为 pch 文件时 include
  • admob ios7错误音频框架

    我正在将 admob SDK 当前的 集成到我的上一个应用程序 IOS7 Xcode5 中 并且出现了一个新错误 在新项目上也是如此 我想我错过了一些东西 但我多次重新启动该过程 但错误仍然存 在 Undefined symbols for
  • 应用程序仅启用纵向,但 UIImagePickerController 在 iOS6 中旋转

    请注意 下面的答案 不适用于 iOS6 所以我仍然需要答案 我的应用程序仅启用纵向模式 但是 如果我将 UIImagePickerController 作为子视图嵌入其中 并旋转设备 则顶部和底部栏将保持在同一位置 但 UIImagePic
  • 共享扩展程序未出现在能够在 iPhone 上共享照片的应用程序列表中

    我正在尝试创建一个共享应用程序扩展 并按照以下来源的教程进行操作 http www technetexperts com mobile share extension in ios application overview with exa
  • 如何删除以前的 ViewController

    我是一名学生 对编程还很陌生 我正在尝试在业余时间学习 Objective C Swift 我使用 spriteKit 和 swift 制作了一个游戏 有多个菜单 场景 我正在尝试从一个视图控制器转换到另一个视图控制器 为此 我使用了以下代

随机推荐