[英]PFObject Subclass as a Property in another PFObject Subclass
Person
是PFObject
的子類 。
Address
也是PFObject
的子類 。 Address
有一個類型為Person
的@property
。
即
// Person.h
@interface Person : PFObject<PFSubclassing>
@property (retain) NSString *firstName;
@property (retain) NSString *secondName;
+ (NSString *)parseClassName;
@end
// Person.m
#import <Parse/PFObject+Subclass.h>
@implementation PP4MEAddress
@dynamic firstName;
@dynamic firstName;
+ (NSString *)parseClassName {
return @"Person";
}
// Address.h
@interface Address : PFObject<PFSubclassing>
@property (retain) Person *deliverToPerson;
@property (retain) NSString *line1;
@property (retain) NSString *line2;
+ (NSString *)parseClassName;
// Address.m
#import <Parse/PFObject+Subclass.h>
@implementation PP4MEAddress
@dynamic deliverToPerson;
@dynamic line1;
@dynamic line2;
+ (NSString *)parseClassName {
return @"Address";
}
兩個子類都在App Delegate
中注冊。
在MyViewController
的方法中,我想將它們設置為如此
例如
-(void)myMethod
{
Address *address = [Address object];
address.deliverToPerson.firstName = @"John";
address.deliverToPerson.secondName = @"Smith";
address.line1 = @"123";
address.line2 = @"Main Street";
[address saveInBackground];
}
執行此代碼時,類Address
條目將輸入到Parse.com Web App上的Data Browser
。 然而,唯一列objectId
, createdAt
, updatedAt
和ACL
我想這是因為,在引擎蓋下, Person
類型的Address @property
沒有被allocated
和initialised
。
我該如何克服這個問題?
我是否為自己寫了一個自定義setter
和getter
@property (retain) Person *deliverToPerson;
在Address.m
?
如果是這樣,我注意到@property
是atomic
,因此我需要在所述setter
和getter
編寫鎖定代碼嗎?
謝謝
我不熟悉parse.com,但我強烈認為你必須在設置關系之前分配Person
對象。 就像是
Address *address = [Address object];
address.line1 = @"123";
address.line2 = @"Main Street";
Person *person = [Person object];
person.firstName = @"John";
person.secondName = @"Smith";
address.deliverToPerson = person;
[address saveInBackground];
你必須像這樣設置你的PFobject
PFObject *anotherPlayer = [PFObject objectWithClassName:@"Player"];
[anotherPlayer setObject:@"DataValue" forKey:@"Name"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.