【发布时间】:2014-02-22 05:00:23
【问题描述】:
我刚刚完成了一个慈善应用程序,直到现在我使用临时用户来填充我的表格视图单元格。我将这些用户对象存储在 NSMutableArray (*people) 中。该应用程序运行良好,我正在尝试将我在 parse.com 中创建的对象添加到同一个人员数组中。
我尝试了很多不同的方法,但一直收到我粘贴在这篇文章底部的错误。
我如何使用从表单中获取的数据填充我的 parse.com 数据库:
PFObject *newPerson = [PFObject objectWithClassName:@"Person"];
NSNumber *age = [NSNumber numberWithInt:[[self mPerson] ageAtDisappearance]];
NSNumber *active = [NSNumber numberWithInt:[[self mPerson] active]];
NSData* data = UIImageJPEGRepresentation([[self mPerson] image], 0.5f);
PFFile *imageFile = [PFFile fileWithName:@"Image.jpg" data:data];
newPerson[@"name"] = [[self mPerson] name];
newPerson[@"ageAtDisappearance"] = age;
newPerson[@"since"] = [[self mPerson] mSince];
newPerson[@"from"] = [[self mPerson] mFrom];
[newPerson setObject:imageFile forKey:@"image"];
newPerson[@"active"] = active;
[newPerson saveInBackground];
我如何在本地填充表格的示例(此代码在下面的 viewDidLoad 方法中:
Person *person = [[Person alloc] init];
[person setName:@"Ben Huddle"];
[person setNotes:@"Some text here"];
[person setAgeAtDisappearance:18];
[person setSince:[NSDate date]];
[person setFrom:@"London, SW"];
[person setReferenceNumber:@"14-334544"];
UIImage *image = [UIImage imageNamed:@"ben.png"];
[person setImage:image];
[person setActive:1];
[people addObject:person];
viewDidLoad:
people = [[NSMutableArray alloc] init];
PFQuery *query = [PFQuery queryWithClassName:@"Person"];
// [query whereKey:@"active" equalTo:@0];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (PFObject *object in objects) {
NSLog(@"%@", object);
PFObject *person = [object objectForKey:[object objectId]];
[people addObject:person];
}
dispatch_async(dispatch_get_main_queue(), ^ {
[[self tableView] reloadData];
});
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
我的 UITableView:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == [[self searchDisplayController] searchResultsTableView]) {
return [searchResults count];
} else {
return [people count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[self tableView] dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
Person *current;
if (tableView == [[self searchDisplayController] searchResultsTableView]) {
current = [searchResults objectAtIndex:indexPath.row];
} else {
current = [people objectAtIndex:[indexPath row]];
}
[[cell textLabel] setText: [current name]];
[[cell imageView] setImage: [current image]];
[[cell detailTextLabel] setText: [current notes]];
return cell;
}
错误:
2014-02-22 04:38:43.912 MPeople[28451:70b] <Person:SVeM3MnILW:(null)> {
active = 0;
ageAtDisappearance = 34;
image = "<PFFile: 0xbe16880>";
from = Eastham;
since = "2014-02-22 00:00:00 +0000";
name = "John Smith";
}
2014-02-22 04:38:43.914 MPeople[28451:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(
0 CoreFoundation 0x027b85e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x0253b8b6 objc_exception_throw + 44
2 CoreFoundation 0x0276abcc -[__NSArrayM insertObject:atIndex:] + 844
3 CoreFoundation 0x0276a870 -[__NSArrayM addObject:] + 64
4 MPeople 0x000102fc __42-[MPPeopleTableViewController viewDidLoad]_block_invoke + 620
5 MPeople 0x00062667 __40-[PFTask thenCallBackOnMainThreadAsync:]_block_invoke_2 + 241
6 libdispatch.dylib 0x02a527f8 _dispatch_call_block_and_release + 15
7 libdispatch.dylib 0x02a674b0 _dispatch_client_callout + 14
8 libdispatch.dylib 0x02a5575e _dispatch_main_queue_callback_4CF + 340
9 CoreFoundation 0x0281da5e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
10 CoreFoundation 0x0275e6bb __CFRunLoopRun + 1963
11 CoreFoundation 0x0275dac3 CFRunLoopRunSpecific + 467
12 CoreFoundation 0x0275d8db CFRunLoopRunInMode + 123
13 GraphicsServices 0x043399e2 GSEventRunModal + 192
14 GraphicsServices 0x04339809 GSEventRun + 104
15 UIKit 0x012a9d3b UIApplicationMain + 1225
16 MPeople 0x0000620d main + 141
17 libdyld.dylib 0x02cf970d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
感谢您的宝贵时间。 亲切的问候
【问题讨论】:
标签: objective-c cocoa-touch uitableview ios7 parse-platform