gpt4 book ai didi

ios - 如何在 Parse 中存储自定义对象数组?

转载 作者:行者123 更新时间:2023-11-29 02:47:13 25 4
gpt4 key购买 nike

对于使用 Parse 的 iOS 应用程序,我需要将一组自定义对象存储到 PFObject 中。我尝试这样做,但收到错误:“NSInvalidArgumentException”,原因:“JSON 写入中的类型无效(JSQMessage)”

是否有任何可能的方法在 Parse 中存储自定义对象数组?我似乎找不到一个好的答案。

供您引用,我正在使用 JSQMessages View Controller 库 https://github.com/jessesquires/JSQMessagesViewController

我尝试添加到 PFObject 的数组是使用以下代码初始化的:

[[NSMutableArray alloc] initWithObjects:
[[JSQMessage alloc] initWithText:initialtext sender:[[PFUser currentUser] objectId] date:[NSDate date]],
nil];

最佳答案

如果您的自定义对象符合 NSCoding 协议(protocol)那么是的,您绝对可以保存它们。

这里有一个万智牌的例子

@interface MTGSet : NSObject <NSCoding>

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *code;
@property (nonatomic, strong) NSDate *releaseDate;

@end

实现

#import "MTGSet.h"

@implementation MTGSet

- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeObject:_code forKey:@"code"];
[aCoder encodeObject:_releaseDate forKey:@"releaseDate"];
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
return [self initWithJSONDictionary:
@{@"name" : [aDecoder decodeObjectForKey:@"name"],
@"code" : [aDecoder decodeObjectForKey:@"code"],
@"releaseDate" : [aDecoder decodeObjectForKey:@"releaseDate"]}];
}

@end

用法

MTGSet *set = [MTGSet new];
set.name = @"Magic 2015";
set.code = @"M15";
set.releaseDate = [NSDate date];

NSData *dataFromSet = [NSKeyedArchiver archivedDataWithRootObject:set];
PFObject *object = [PFObject objectWithClassName:@"MyObject"];
object[@"set"] = dataFromSet;
[object save];

MTGSet *unarchivedSet = [NSKeyedUnarchiver unarchiveObjectWithData:object[@"set"]];
NSLog(@"Here's the set: %@", unarchivedSet);

有一些库可以使用我推荐的 objective-c 运行时使这更容易。

https://github.com/eladb/Parse-NSCoding

关于ios - 如何在 Parse 中存储自定义对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com