我的应用程序是一个音乐库应用程序,用户有他们的歌曲,他们可以创建播放列表.
我希望播放列表中歌曲的顺序符合用户将这些歌曲添加到该播放列表的顺序.
我的核心数据对象:
Song
=====
name
duration
album
artist (to one relationship)
Playlist
========
title
songs (to many relationship)
Run Code Online (Sandbox Code Playgroud)
我有一个播放列表的表格视图,该表格中的每一行都显示播放列表的标题和添加到该播放列表的最后一首歌曲的名称.
我有两个问题:
我正在使用Facebook图形API为我的iPhone应用程序获取附近的地方列表,我使用带有一些参数的"搜索"请求.我得到的回复是一个包含以下信息的地方列表:"纬度","经度","名称","身份"......我也想要这个地方的照片(如果生病去看病的那个Facebook上的地方页面)是否可以通过API获取此图片?
这是一个很好的做法,用try和catch来包装每个函数吗?
我正在用c#构建一个服务器,并且我试图了解是否有一种方法可以使其更加健壮并且可以防止崩溃,使用try&catch语句将其中的每个函数包装起来.
这样做是否合理?
我正在尝试了解如何使用http POST和我当前的客户端 - 服务器协议设计发送图像.从客户端到服务器的所有消息类似于下面的示例,有一个带参数的cmd字符串cmd
和一些更相关的命令参数.
例如,这是我向服务器发送文本消息的方式:
- (void)sendMessagesWithText:(NSString *)text fromUser:(NSString *)userId
{
NSString *url = SERVER_URL;
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"cmd=%@&userid=%@&msgtext=%@",
@"sendmessage",
userId,
text] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
// send to server
[[NetworkHelper sharedManager] sendRequest:request];
}
Run Code Online (Sandbox Code Playgroud)
现在我想让用户也发送图像,但是如何使用我的协议设计发送它?我应该在cmd字符串后将图像附加到正文吗?
我几乎可以肯定有一天我看到有一些属性可以设置一个较短的viewController名称,当它按下另一个viewController并成为后面的viewController时,它会显示在后退按钮中.有人可以提醒我这个属性是什么?
objective-c back-button uiviewcontroller uinavigationcontroller ios
我有一个viewController里面的一个navigationController
,视图控制器有一个tableview.
在viewDidLoad
我设置tableview
- (void)viewDidLoad
{
[super viewDidLoad];
// init tableView
CGRect tableFrame = self.view.bounds;
_tableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];
}
Run Code Online (Sandbox Code Playgroud)
这段代码的问题是表视图框架不正确 - 高度为460,我需要它为416.
[iPhone屏幕高度为480,减去状态栏(20)减去导航栏(44)= 416]
那么设置表格视图以便填充屏幕的正确方法是什么?
我可以想到两种方式:
将其框架设置为= (0, 0, 320, 416)
使用: [_tableView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
它是在编写Objective-c方法时添加错误输出参数的常见模式.
据我所知,这是如何创建一个方法,如果出错,返回错误:
- (void)doSomethingWithObj:(id)obj error:(NSError *__autoreleasing *)error {
BOOL success = NO;
// do somthing...
if (!success) {
*error = [NSError errorWithDomain:@"the.domain" code:0 userInfo:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
现在有时你只想要这个错误参数来反映你在方法中使用的其他方法中发生的错误,让我们说:
- (void)fetchObjectInContext:(NSManagedObjectContext *)context error:(NSError *__autoreleasing *)error {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"SomeObject"];
NSArray *results = [context executeFetchRequest:request error:nil];
}
Run Code Online (Sandbox Code Playgroud)
所以我认为好,我只是将error参数传递给inside方法,如下所示:
- (void)fetchObjectInContext:(NSManagedObjectContext *)context error:(NSError *__autoreleasing *)error {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"SomeObject"];
NSArray *results = [context executeFetchRequest:request error:error];
if (error) {
NSLog(@"error %@", error);
}
}
Run Code Online (Sandbox Code Playgroud)
但这种方法有两个问题:
1.即使没有错误,if (error)
检查YES
也会返回. …